Thread Dir ohne Unterordner in .txt Datei u.ä.. Wie?
(60 answers)
Opened by stormy2211 at 2007-11-02 21:31
So ist das ganze etwas Eleganter:
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 #!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=<LESEN>; 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"; und bitte, bitte gewöhne dir das Einrücken an. Das hilft dir wirklich sehr bei größeren Projekten. |