Thread Dateien durchsuchen (war: Kann man das so machen1) (5 answers)
Opened by rk-ger at 2006-08-29 00:53

rk-ger
 2006-08-29 00:53
#69331 #69331
User since
2006-08-07
45 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich fange grade mit Perl an. Das folgende Programm funktioniert, aber ist der Stil auch OK? Wo habe ich zu kompliziert und umständlich gearbeitet? Jede konstruktive Kritik ist willkommen.

Die selbstgestellte Aufgabe war: in einem Verzeichnis liegen viele Dateien. Jede Datei mit einer bestimmten Endung und ohne '~' am Dateianfang soll geparst werden. Dabei soll jede Zeile darauf hin geprüft werden, ob ein bestimmter String enthalten ist. Wenn ja, dann Rückgabe der Nummer. Ansonsten einfach nur eine Meldung ausgeben.

Code: (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
use strict;
use warnings;
my $filename = ""; # für den dateinamen
my $startdir = "c:\\foo\\bar\\"; # in welchem dir geht es los?
my $NR_found; # für die NR
opendir(DIR, $startdir) or die "Verzeichnis kann nicht geöffnet werden: $!\n";
while (defined ($filename = readdir(DIR))) {
if (-f "${startdir}$filename" and $filename =~ /(^[^~].*\.txt)$/i) { # richtige art von datei?
# und dann zum lesen öffnen
open IN,"<${startdir}$filename" or die "Datei kann nicht geöffnet werden -> ${startdir}$filename : $!";
my @in = <IN>;
$NR_found = "0"; # variable zurücksetzen
foreach my $line (@in) { # jede datei zeilenweise durchgehen
if ($line =~ /(NR \d{7})/) { # was sinnvollen gefunden?
$NR_found = $1; # dann speichern
}
} # alle zeilen durch?
if ( not $NR_found eq "0") { # haben wir was?
print "mit NR ->$NR_found\n"; # dann drucken
}
else {
print "keine NR Nr.\n"; # oder fehlschlag melden
}
close (IN); # zumachen
}
}
closedir (DIR); # auch da zumachen


Gruß
Richard

View full thread Dateien durchsuchen (war: Kann man das so machen1)