readline
readline
readline EXPR
readline
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 .html?lang=en"line" used here is whatever you may have defined with $/
or $INPUT_RECORD_SEPARATOR
). 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.
$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 dies if the result is not defined-
while ( ! eof($fh) ) { defined( $_ = <$fh> ) or die "readline failed: $!"; ... }
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.
foreach my $arg (@ARGV) { open(my $fh, $arg) or warn "Can't open $arg: $!"; while ( ! eof($fh) ) { defined( $_ = <$fh> ) or die "readline failed for $arg: $!"; ... } }
© 1993–2016 Larry Wall and others
Licensed under the GNU General Public License version 1 or later, or the Artistic License.
The Perl logo is a trademark of the Perl Foundation.
http://perldoc.perl.org/5.22.0/functions/readline.html