- 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 "line" used here is whatever you may have defined with$/
(or$INPUT_RECORD_SEPARATOR
in English). See "$/" in perlvar.型グロブが EXPR (EXPR がない場合は
*ARGV
) に含まれている ファイルハンドルから読み込みます。 スカラコンテキストでは、呼び出し毎に一行読み込んで返します; ファイルの 最後まで読み込んだら、以後の呼び出しでは undef を返します。 リストコンテキストでは、ファイルの最後まで読み込んで、行のリストを返します。 ここでの「行」とは、$/
(または English モジュールでは$INPUT_RECORD_SEPARATOR
) で 定義されることに注意してください。 "$/" 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.$/
に undef を設定した場合は、 readline はスカラコンテキスト (つまりファイル吸い込み モード)となり、空のファイルを読み込んだ場合は、最初は''
を返し、 それ以降は undef を返します。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.これは
<EXPR>
演算子を実装している内部関数ですが、 直接使うこともできます。<EXPR>
演算子についてのさらなる詳細については "I/O Operators" in perlop で議論されています。my $line = <STDIN>; my $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.readline が OS のシステムエラーになると、
$!
に対応するエラーメッセージがセットされます。 tty やソケットといった、信頼できないファイルハンドルから読み込む時には$!
をチェックするのが助けになります。 以下の例は演算子の形の readline を使っており、結果が 未定義の場合は die します。while ( ! eof($fh) ) { defined( $_ = readline $fh ) or die "readline failed: $!"; ... }
Note that you 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 handlesARGV
differently.readline のエラーは
ARGV
ファイルハンドルの方法では 扱えないことに注意してください。 この場合、eof はARGV
を異なった方法で扱うので、@ARGV
のそれぞれの要素を自分でオープンする必要があります。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.<EXPR>
演算子と同様、readline
式がwhile
やfor
ループの条件として使われた場合、 これは暗黙に$_
に代入されます。readline
式またはreadline
式からスカラへの明示的な代入がwhile
/for
の条件部として使われた場合、 条件は通常の真の値かどうかではなく、式の値が定義されているかどうかを テストします。