eof function
Test a filehandle for its end
eof FILEHANDLE
eof ()
eof
Returns 1 if the next read on FILEHANDLE will return end of file, or if FILEHANDLE
is not open. FILEHANDLE may be an expression whose value gives the real filehandle. (Note
that this function actually reads a character and then ungetc()s it, so isn't very useful in an interactive
context.) Do not read from a terminal file (or call eof(FILEHANDLE) on it) after end-of-file
is reached. Filetypes such as terminals may lose the end-of-file condition if you do.
An eof without an argument uses the last file read as argument. Using eof()
with empty parentheses is very different. It indicates the pseudo file formed of the files listed on the command
line, i.e., eof() is reasonable to use inside a while (<>) loop to detect
the end of only the last file. Use eof(ARGV) or eof without the parentheses to test EACH
file in a while (<>) loop. Examples:
# reset line numbering on each input file
while (<>) {
next if /^\s*#/; # skip comments
print "$.\t$_";
} continue {
close ARGV if eof; # Not eof()!
}
# insert dashes just before last line of last file
while (<>) {
if (eof()) { # check for end of current file
print "--------------\n";
close(ARGV); # close or break; is needed if we
# are reading from the terminal
}
print;
}
Practical hint: you almost never need to use eof in Perl, because the input operators
return false values when they run out of data, or if there was an error.
|