#!C:\\Perl\bin\perl.exe use strict; use warnings; my $Basisverzeichnis='C://'; my $Verzeichnis=$Basisverzeichnis.'Freunde'; my $Verzeichnis_Datei=$Basisverzeichnis.'Verzeichnis.txt'; my $Namen_Datei=$Basisverzeichnis.'Namensliste.txt'; my @Verzeichnisliste; opendir(Freunde, $Verzeichnis) or die "Konnte Ordner '$Verzeichnis' nicht öffnen ($!)\n"; while(my $Filename=readdir(Freunde)) { next if($Filename =~/^\.|\.\.$/); push(@Verzeichnisliste,$Filename) if(-f $Verzeichnis.'/'.$Filename); } closedir(Freunde); my @Namensliste; for my $Filename (@Verzeichnisliste) { $Filename=~/^(.+?)@/s; push(@Namensliste,$1); } open(SPEICHERN,'>',$Verzeichnis_Datei) or die "Konnte '$Verzeichnis_Datei' nicht Speichern ($!)\n"; print SPEICHERN join("\n",@Verzeichnisliste); close(SPEICHERN); open(SPEICHERN2,'>',$Namen_Datei) or die "Konnte '$Namen_Datei' nicht Speichern ($!)\n"; print SPEICHERN2 join("\n",@Namensliste); close(SPEICHERN2); my $Zahl; #hier sage ich er soll alle Dateien der Reihe nach öffnen bis eben die letze Datei erledigt ist for my $counter (0..$#Verzeichnisliste) # "$#Verzeichnisliste" gibt die Nummer des Letzten Eintrages im Array @Verzeichnisliste zurück # (0..Wert) erzeugt eine Liste (Array) mit den Zahlen von 0 bis Wert. { my $Name=$Namensliste[$counter]; my $Datei=$Verzeichnisliste[$counter]; # print "$Name <> $Datei\n"; open (LESEN,'<',$Verzeichnis.'/'.$Datei) or die "konnte '$Verzeichnis/$Datei' nicht öffnen ($!)\n"; # Zeilentrenner für das Auslesen abschalten local $/=undef; # die ganze Datei in einem Rutsch einlesen my $Data=; close(LESEN); #falls Name in Datei vorhanden, egal ob/mayer oder Mayer #dann wird die Zahl um eins erhöht, falls es 2x vorkommt #trotzdem nur einmal da if Bedinung 1x erfüllt und es #dann gleich weiter geht $Zahl++ if($Data=~/$Name/i); } print "Anzahl der Übereinstimmungen insgesammt: $Zahl\n"; print "Anzahl der Dateinamen: ".scalar(@Verzeichnisliste)."\n"; print "Anzahl der Namen: ".scalar(@Namensliste)."\n";