#!/usr/bin/perl # 24.07.2013 # Test-Datei: öffnen der .txt Dateien und suchen nach .SUBCKT, diese Dateien dann in neue Datei speichern # Funktioniert noch nicht: Dateien ohne .SUBCKT raussuchen --> Fehler: Für jede Zeile ist ein Array Element angelegt, und speichert somit für jede # Zeile ohne .SUBCKT den Inhalt der Datei in die neue Datei use strict; use warnings; use File::Find; use CGI::Carp qw(fatalsToBrowser); # Variablen my $Bauteil; my $Bauteil_found = 1; my $file; my $Subckt; # Arrays my @Dioden; my @files; my @Subckt; my @Bauteil; # ********************************************************** # Liest die Dateinamen aus und schreibt sie in @files: opendir(DIR, ".") or die "Fehler beim Öffnen des Ordners.\n"; @files = readdir(DIR); foreach $file (sort @files) { print "$file\n"; # Ausgabe der eingelesenen Dateinamen im Konsolenfenster } closedir(DIR); # ********************************************************** # Überprüft, ob eine Datei mit .txt hinten in dem Ordner vorhanden ist foreach (@files) { if ($_ =~ /.*.txt$/i) { $Bauteil = $_; $Bauteil_found = 0; # ********************************************************** # Wenn keine .txt Datei vorhanden oder Fehler beim Öffnen dieser: Error Meldung if ($Bauteil_found) { open (sd_err, ">Error.txt"); print sd_err "Error" ; close (sd_err); die "\n\nError: Keine Testdateien vorhanden. Die zu verarbeiteten Dateien müssen mit .txt enden!\n\n"; }; # Wenn doch eine oder mehrere .txt Dateien vorhanden sind # Schreibe die Daten in das Array "@Bauteil" open (BAUTEIL,"<$Bauteil"); @Bauteil= ; close BAUTEIL; # ********************************************************** #print @Bauteil; # Gibt die Daten vom Array @Bauteil auf dem Konsolenfenster aus # In den Arrays sind die Daten Zeilenweise hinterlegt, also für jede Zeile ein Array!! foreach (@Bauteil) { if ($_ =~ /^\.SUBCKT\b/i) #Erklärung Reguläre Ausdrücke: ^->Beginnt am Anfang einer Zeile, \-> für den . , { #\b-> Wortbegrenzung nach hinten, i-> Groß-und Kleinschreibung wird nicht berücksichtigt open (ZIELD, ">>SUBCKT.txt"); print ZIELD @Bauteil; print ZIELD "\n\n\n"; close(ZIELD); } else { open (ZIELD1, ">>MODEL.txt"); print ZIELD1 @Bauteil; print ZIELD1 "\n\n\n"; close(ZIELD1); } } } # erste If Schleife schließen } # foreach Schleife schließen