Reads from the filehandle whose typeglob is contained in EXPR. 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 however you may have defined it
with $/
or $INPUT_RECORD_SEPARATOR
). See 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 perlop/"I/O Operators".
$line = <STDIN>; $line = readline(*STDIN); # same thing
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 takes the necessary
steps to ensure that readline
was successful.
for (;;) { undef $!; unless (defined( $line = <> )) { die $! if $!; last; # reached EOF } # ... }