Thread Dir ohne Unterordner in .txt Datei u.ä.. Wie? (60 answers)
Opened by stormy2211 at 2007-11-02 21:31

stormy2211
 2007-11-03 16:35
#101769 #101769
User since
2007-11-02
20 Artikel
BenutzerIn
[default_avatar]
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

View full thread Dir ohne Unterordner in .txt Datei u.ä.. Wie?