[quote=rk-ger,28.08.2006, 22:53]
[/quote]
Sehr löblich.
Quote
my $startdir = "c:\\foo\\bar\\"; # in welchem dir geht es los?
Man kann unter DOS/Windows wie unter UNIX/Linux auch den Vorwärtsschrägstrich als Verzeichnistrenner benutzen, was meist etwas übersichtlicher ist.
my $startdir = 'C:/foo/bar/';
Quote
# und dann zum lesen öffnen
open IN,"<${startdir}$filename" or die "Datei kann nicht geöffnet werden -> ${startdir}$filename : $!";
Bei neueren Perl-Versionen wird die "3-Parameter-Form" von open() bevorzugt, weil sie sicherer ist.
Ich persönlich bevorzuge es auch, beim Zusammensetzen von Pfad und Dateinamen explizit einen Pfadtrenner zu setzen (dann kann man ihn beim Pfadnamen problemlos weglassen).
open (IN, '<', "$startdir/$filename") or die "...";
Quote
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?
Es ist ineffizient, erst die ganze Datei einzulesen und dann zeilenweise durchzugehen. Besser direkt zeilenweise einlesen und abarbeiten. Auch kann man die Schleife abbrechen, wenn ein Treffer gefunden wurde (außer, es können mehrere Treffer in der Datei vorkommen und du möchtest immer gerade den
letzten haben).
$NR_found = "0";
while (my $line = <IN>) {
if ($line =~ /(NR \d{7})/) {
$NR_found = $1; # Treffer speichern
last; # Schleife abbrechen
}
}
Quote
if ( not $NR_found eq "0") { # haben wir was?
Oder:
if ($NR_found ne "0") ...