Thread Dir ohne Unterordner in .txt Datei u.ä.. Wie?
(60 answers)
Opened by stormy2211 at 2007-11-02 21:31
Hab des jetzt eingebaut, aber funktioniert bei mir i-wie noch nicht, was hab ich falsch eingebaut oder angewandt? bin sowieso mit eurem Fachgesimpel momentan überfordert *g
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 64 65 66 67 68 #!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 #wäre das dann nicht <=$test-1 statt <=$test ? { #für was müsste ich hier $Dateiname einsetzen? bei mir finde ich diese Variabel nicht #müsste ich in meinem Fall dann $Verzeichnis[$s] einsetzen? for my $Dateiname (@Verzeichnis) 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]) { #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 "$Zahl\$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. Ich hab doch eigentlich nichts anderes gemacht damit er eben eure Suchfunktion bei jeder Datei $Verzeichnis[$s] nach dem Namen $Namensliste[$s] durchsucht. und das eben so oft es eine Datei gibt. wenn ich z.bsp folgendes habe: mayer@ort1.txt (in dieser Datei steht /mayer drin.) müller@ort2.txt (hier steht müller drin) dieter@ort3.txt (diese datei enthält den Namen dieter nicht) dann müsste als Ergebnis rauskommen: 2 (2 Dateien enthielten ihren Namen) Feuer! was mach ich falsch? mfg stormy http://img401.imageshack.us/img401/4576/69809978zz...
Ich sag mal lieber nicht bei welchem Board diese Meldung kam http://smiliestation.de/smileys/Gemischt/132.gif |