- readline EXPR
- readline
-
Reads from the filehandle whose typeglob is contained in EXPR (or from
*ARGVif 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_SEPARATORin English). See "$/" in perlvar.型グロブが EXPR (EXPR がない場合は
*ARGV) に含まれている ファイルハンドルから読み込みます。 スカラコンテキストでは、呼び出し毎に一行読み込んで返します; ファイルの 最後まで読み込んだら、以後の呼び出しでは undef を返します。 リストコンテキストでは、ファイルの最後まで読み込んで、行のリストを返します。 ここでの「行」とは、$/(または English モジュールでは$INPUT_RECORD_SEPARATOR) で 定義されることに注意してください。 "$/" in perlvar を参照してください。When
$/is set to undef, whenreadlineis 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 thingIf
readlineencounters 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 ofreadlineand 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
readlineerrors that way with theARGVfilehandle. In that case, you have to open each element of@ARGVyourself since eof handlesARGVdifferently.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 areadlineexpression is used as the condition of awhileorforloop, then it will be implicitly assigned to$_. If either areadlineexpression or an explicit assignment of areadlineexpression to a scalar is used as awhile/forcondition, 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の条件部として使われた場合、 条件は通常の真の値かどうかではなく、式の値が定義されているかどうかを テストします。