Markus: open+Regular Expressions

Beitrag lesen

Hallo, erst einmal alles gute zum 10-jährigen.

Ich habe folgendes Problem, ich möchte Meherere Dateien meines Arbeitgeber aus diveresen Ordnern nach "Zombie-Dateien" durchsuchen.

Hierzu habe ich u.A. folgenden Code geschrieben

"
$dir = "C:/Dokumente und Einstellungen/eisenhutm/Desktop/SDST/TBDs/bwt";
opendir(BIN, $dir) or die "Can't open $dir: $!";
while( defined ($file = readdir BIN) ) {
 if($file=~(/.log/)){
  print"$file\n";
  $datei=$file;
  open(FILE,"C:/Dokumente und Einstellungen/eisenhutm/Desktop/SDST/TBDs/bwt/$datei")||   die"FEHLER:$!\n";
  print "Datei : $datei\n\n";
  print "        -----------------------\n\n";
  while($zeile=<FILE>){
   if($zeile=~(/.bmp|.BMP|.wav|.WAV/)){
[b]====>FEHLER ****[/b]  if($zeile=~(/(.*)"(.*)"/)){
     $dat=$2;
     print "$dat $zeile";
    }
   }
  }
  close(FILE);
 }
}
closedir(BIN);
"

Das Programm funktioniert soweit auch und gibts u.A. folgende Zeilen aus :

antwb_12.bmp ItemspezifischeWerte"12",12,"aufwb_12.bmp","antwb_12.bmp"),

Quelle: ItemspezifischeWerte"12",12,"aufwb_12.bmp","antwb_12.bmp"),
also die zu löschenden Dateien und den Pfad

==>PROBLEM, einige Dateien haben folgenden Zeilenaufbau
Quelle : ItemspezifischeWerte("1",1,"auftr_01.bmp"," 63"),

so dass das Programm folgendes ausspuckt:
 63 ItemspezifischeWerte("1",1,"auftr_01.bmp"," 63"),

d.h. die 63 und nicht "auftr_01.bmp", habe jetzt seit Stunden probiert den Regulären Ausdruck hinzubekommen aber nichts klappt

In Zeile 1 wird die Datei nach den Zeilen durchsucht die bmp oder wav sind, in der Darunter soll dann die zu löschende Datei ausgegeben werden. Wie muss ich in Zeile 2 ==> "(.*)" verändern so dass er nur .bmp und .wav in Anführungszeichen berücksichtigt? Ich krieg es einfach nicht hin... hoffe ihr könnt mir helfen.

Gruß Markus

Zeile 1 :if($zeile=~(/.bmp|.BMP|.wav|.WAV/)){
Zeile 2 :if($zeile=~(/(.*)"(.*)"/)){