Reads from the filehandle whose typeglob is contained in EXPR (or from
*ARGV
if EXPR is not provided). In scalar context, each call reads and
returns the next line until end-of-file is reached, whereupon the
subsequent call returns undef. In list context, reads
until end-of-file is reached and returns a list of lines. Note that the
notion of "line" used here is whatever you may have defined with
$/ (or $INPUT_RECORD_SEPARATOR
in
English). See $/ in perlvar.
When $/ is set to undef,
when readline is in scalar context (i.e., file
slurp mode), and when an empty file is read, it returns ''
the first
time, followed by undef subsequently.
This is the internal function implementing the <EXPR>
operator, but you can use it directly. The <EXPR>
operator is discussed in more detail in I/O Operators in perlop.
If readline encounters an operating system error, $! will be set with the corresponding error message. It can be helpful to check $! when you are reading from filehandles you don't trust, such as a tty or a socket. The following example uses the operator form of readline and dies if the result is not defined.
Note that you have can't handle readline errors
that way with the ARGV
filehandle. In that case, you have to open
each element of @ARGV yourself since
eof handles ARGV
differently.