Readers: 25
![]() |
|< 1 2 3 4 5 6 7 >| | ![]() |
61 entries, 7 pages |
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 64 65 66 67 68 69 70 71 72 73
#!C:\\Perl\bin\perl.exe use strict; use warnings; my $test=0; #mit der Zahl wird die Anzahl der Dateien gelesen my @Verzeichnis; opendir(Freunde, 'C://Freunde') or die "Konnte Ordner nicht öffnen ($!)\n"; while(my $Filename=readdir(Freunde)) {next if($Filename eq '.' or $Filename eq '..'); if(-f 'C://Freunde/'.$Filename) {$test=$test+1; push(@Verzeichnis,$Filename); } } closedir(Freunde); my @Namensliste; for my $Filename(@Verzeichnis) { $Filename=~/^(.+?)@/s; push(@Namensliste,$1); } open(SPEICHERN,'>','C://Verzeichnis.txt') or die "Konnte Verzeichnis nicht Speichern ($!)\n"; print SPEICHERN join("\n",@Verzeichnis); close(SPEICHERN); open(SPEICHERN2,'>','C://Namensliste.txt') or die "Konnte Titelliste nicht Speichern ($!)\n"; print SPEICHERN2 join("\n",@Namensliste); close(SPEICHERN2); #des darüber stehende ab hier will ich nicht mehr verändern, des funzt ja alles dank hilfe =) print "$test\n$Verzeichnis[03]\n$Namensliste[03]\n"; #übereinstimmung von verz-->namen und wieviele .txt es gibt wird angezeigt my @inhalt; my $Zahl; for (my $s=00;$s<=$test;$s++) #hier sage ich er soll alle Dateien der Reihe nach öffnen bis eben die letze Datei erledigt ist { #open open (LESEN,"<C:/Freunde/$Verzeichnis[$s]"); my @inhalt=<LESEN>; my $Data=join(' ', @inhalt); #hier wird inhalt in eine Zeile gestopft #also slurpen soweit ich verstanden habe for my $Name ($Namensliste[$s]) { #for my bracket #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) { #if bracket $Zahl++; } #if bracket } #for my bracket close(LESEN) } #close print "$Zahl\n$test\n"; <stdin> #hier lasse ich mir eben ausgeben in wievielen #Textdateien der Name wo im Namen der Datei stand #auch im Dateiinhalt steht und wieviele Dateien #es insgesamt waren.
my @Array=("Das","ist","ein","Satz.")
my $1ster_Eintrag=$Array[0]
my $4ter_Eintrag=$Array[3]
for my $Name ($Namensliste[$s])
my $Name = $Namensliste[$s];
for my $Name (@Namensliste)
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";
Quotedu willst doch das Array "@Namensliste" für jede geöffnete Datei einmal durch laufen und nicht nur für den Namen, dessen Datei du geöffnet hast.
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='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=<LESEN>; 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";
![]() |
|< 1 2 3 4 5 6 7 >| | ![]() |
61 entries, 7 pages |