=over =item readline EXPR 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 C<$/> or C<$INPUT_RECORD_SEPARATOR>). See L. When C<$/> is set to C, when readline() is in scalar context (i.e. file slurp mode), and when an empty file is read, it returns C<''> the first time, followed by C subsequently. This is the internal function implementing the C<< >> operator, but you can use it directly. The C<< >> operator is discussed in more detail in L. $line = ; $line = readline(*STDIN); # same thing If readline encounters an operating system error, C<$!> will be set with the corresponding error message. It can be helpful to check C<$!> 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 C, and takes the necessary steps to ensure that C was successful. for (;;) { undef $!; unless (defined( $line = <> )) { die $! if $!; last; # reached EOF } # ... } =back