Movatterモバイル変換


[0]ホーム

URL:


functions /readline
(source,CPAN)
You are viewing the version of this documentation from Perl 5.30.3.View the latest version
#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 returnsundef. 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 inEnglish). See"$/" in perlvar.

When$/ is set toundef, whenreadline is in scalar context (i.e., file slurp mode), and when an empty file is read, it returns'' the first time, followed byundef 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.

my $line = <STDIN>;my $line = readline(STDIN);    # same thing

Ifreadline 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 ofreadline and dies if the result is not defined.

while ( ! eof($fh) ) {    defined( $_ = readline $fh ) or die "readline failed: $!";    ...}

Note that you have can't handlereadline errors that way with theARGV filehandle. In that case, you have to open each element of@ARGV yourself sinceeof handlesARGV differently.

foreach my $arg (@ARGV) {    open(my $fh, $arg) or warn "Can't open $arg: $!";    while ( ! eof($fh) ) {        defined( $_ = readline $fh )            or die "readline failed for $arg: $!";        ...    }}

Like the<EXPR> operator, if areadline expression is used as the condition of awhile orfor loop, then it will be implicitly assigned to$_. If either areadline expression or an explicit assignment of areadline expression to a scalar is used as awhile/for condition, then the condition actually tests for definedness of the expression's value, not for its regular truth value.

Perldoc Browser is maintained by Dan Book (DBOOK). Please contact him via theGitHub issue tracker oremail regarding any issues with the site itself, search, or rendering of documentation.

The Perl documentation is maintained by the Perl 5 Porters in the development of Perl. Please contact them via thePerl issue tracker, themailing list, orIRC to report any issues with the contents or format of the documentation.


[8]ページ先頭

©2009-2025 Movatter.jp