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 useful in an
interactive context.) Do not read from a terminal file (or call
eof(FILEHANDLE) on it) after end-of-file is reached. File types such
as terminals may lose the end-of-file condition if you do.

An eof without an argument uses the last file read. Using eof()
with empty parentheses is different. It refers to the pseudo file
formed from the files listed on the command line and accessed via the
<>
operator. Since <>
isn't explicitly opened,
as a normal filehandle is, an eof() before <>
has been
used will cause @ARGV
to be examined to determine if input is
available. Similarly, an eof() after <>
has returned
end-of-file will assume you are processing another @ARGV
list,
and if you haven't set @ARGV
, will read input from STDIN
;
see I/O Operators in perlop.

In a while(<>)
loop, eof or eof(ARGV) can be used to
detect the end of each file, whereas eof() will detect the end
of the very last file only. Examples: