#!C:\\Perl\bin\perl.exe use strict; use warnings; my $Basisverzeichnis='./'; my $Verzeichnis=$Basisverzeichnis.'Freunde'; my $Verzeichnis_Datei=$Basisverzeichnis.'Verzeichnis.txt'; my $Namen_Datei=$Basisverzeichnis.'Namensliste.txt'; my @Verzeichnis; opendir(Freunde, $Verzeichnis) or die "Konnte Ordner '$Verzeichnis' nicht öffnen ($!)\n"; while(my $Filename=readdir(Freunde)) { next if($Filename =~/^\.|\.\.$/); push(@Verzeichnis,$Filename) if(-f $Verzeichnis.'/'.$Filename); } closedir(Freunde); my @Namensliste; for my $Filename (@Verzeichnis) { $Filename=~/^(.+?)@/s; push(@Namensliste,$1); } open(SPEICHERN,'>',$Verzeichnis_Datei) or die "Konnte '$Verzeichnis_Datei' nicht Speichern ($!)\n"; print SPEICHERN join("\n",@Verzeichnis); 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 $Dateiname (@Verzeichnis) { open (LESEN,'<',$Verzeichnis.'/'.$Dateiname) or die "konnte '$Verzeichnis/$Dateiname' nicht öffnen ($!)\n"; # Zeilentrenner für das Auslesen abschalten local $/=undef; # die ganze Datei in einem Rutsch einlesen my $Data=; for my $Name (@Namensliste) { #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 if($Data=~/$Name/i) { $Zahl++; } } close(LESEN) } print "Anzahl der Übereinstimmungen insgesammt: $Zahl\n"; print "Anzahl der Dateinamen: ".scalar(@Verzeichnis)."\n"; print "Anzahl der Namen: ".scalar(@Namensliste)."\n";