Zeilenweise lesen einer Datei

03/04/2008 - 13:34 von Thomas Guettler | Report spam
Hallo,

Ich möchte von einem Filedescriptor zeilenweise lesen
und jedesmal prüfen, ob das Lesen erfolgreich war. Als
Vorlage diente diese URL:

http://perldoc.perl.org/functions/readline.html

Leider funktioniert das nicht, wenn die letzte Zeile kein
Newline Zeichen am Ende hat:

{{{
open FD, "test.txt" or die $!;
for (;;) {
undef $!;
unless (defined( $line = <FD> )) {
die $! if $!;
last; # reached EOF
}
print "line $line";
}
close FD;
}}}


perl file.pl


line ...
Bad file descriptor at file.pl line 5, <FD> line 2.


Man könnte nun bei jedem Scheifendurchlauf prüfen ob
die Zeichenkette mit endet, aber gibt es nicht eine
bessere Lösung?

Thomas
 

Lesen sie die antworten

#1 Peter Ludikovsky
03/04/2008 - 13:55 | Warnen spam
Thomas Guettler wrote:
Hallo,

Ich möchte von einem Filedescriptor zeilenweise lesen
und jedesmal prüfen, ob das Lesen erfolgreich war. Als
Vorlage diente diese URL:

http://perldoc.perl.org/functions/readline.html

Leider funktioniert das nicht, wenn die letzte Zeile kein
Newline Zeichen am Ende hat:

{{{
open FD, "test.txt" or die $!;
for (;;) {
undef $!;
unless (defined( $line = <FD> )) {
die $! if $!;
last; # reached EOF
}
print "line $line";
}
close FD;
}}}

> perl file.pl
line ...
Bad file descriptor at file.pl line 5, <FD> line 2.


Man könnte nun bei jedem Scheifendurchlauf prüfen ob
die Zeichenkette mit endet, aber gibt es nicht eine
bessere Lösung?

Thomas



wàre es nicht einfacher so:

open FD,"test.txt" or die $!;
while($line = <FD>){
#whatever
}

hth
/peter

Ähnliche fragen