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

stormy2211
 2007-11-03 15:12
#101742 #101742
User since
2007-11-02
20 Artikel
BenutzerIn
[default_avatar]
*hust* Duell der Giganten *g*
Hätte da noch ne Herausforderung für euch oder auch:
Bräuchte noch mal eure Hilfe. =)
Des mit den Listen etc. funktioniert einwandfrei, auch keine Rechtschreibfehler drin gewesen. Habs dann gleich dann mal an einem anderen Ordner ausprobiert.
Hab jetzt mal nen Ordner Freunde erstellt, in dem ich schön ganz viele txt Dateien im Format Name@Ort.txt abgespeichert habe.
Soweit so gut, liest das Verzeichnis schön aus usw., hab dann auch noch was zum zählen reingepackt weil ich mir gedacht hab ist doch interessant wieviele Dateien es dann sind und man es später noch gebrauchen kann.
Das was ich mir in den Kopf gesetzt habe bzw. wissen will wie es funktioniert:
Die Dateien nacheinander öffnen und in jeder jeweils nach dem Namen von dem Freund suchen(sprich in Datei mayer@ort.txt nach mayer, aber in mülller@ort2.txt nach müller usw.), falls vorhanden dann eine Zahl um 1 erhöhen, so dass ich weiß in wievielen Textdateien der Name des jeweiligen Freundes enthalten ist.
Hab auch schon grob was erstellt, weiß allerdings nicht wie ich mit Perl richtig suchen kann. Hab den Code davor auch mal mit reingepackt, wegen der $test Zahl die die Anzahl der Dateien zählt.
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
#!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 $Zahl; 
#Die Zahl die erhöht werden soll, sofern in der
#Datei Mayer@München.txt der Namen Mayer vorhanden ist(also im Inhalt)
#kann sein das eventuell auch /Mayer dran steht.
my @inhalt;
#ist wo für jede Datei deren Inhalt abgespeichert wird
for (my $s=00;$s<=$test;$s++) 
{
open(LESEN,"<","C://Freunde/$Verzeichnis[$s]");
@inhalt=<LESEN>;

##########################################
# Hier bräuchte ich jetzt etwas was jede #
# Zeile nach $Namensliste[$s] durchsucht #
# Das müsste sowohl mayer, Mayer aber    #
# auch /mayer /Mayer und .mayer .Mayer   #
# erkennen aber maximal die Zahl nur um  #
# eins erhöhen auch wenn es ein paar mal #
# vorkommt, also i-wie das wenn mehr wie #
# 2 gefunden trotzdem nur $Zahl+1 ist    #
# und nicht jedesmal wenn es was findet  #
##########################################

close(LESEN);}


Danke schon mal im Vorraus.
Nen schönen Tag noch an alle,
mfg stormy

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