Perl5 リファレンス



eof

【文法】

eof FILEHANDLE
eof ()


【説明】

FILEHANDLEでの次の読み込みでファイルの最後に達する場合、または、FILEHANDLEがオー
プンされていない場合に、1 を返します。FILEHANDLEには、実際のファイルハンドル名を
格納した変数でもかまいません。(この関数は実際には文字を読みます。そしてそれを 
ungetc するので、対話式のコンテキストではほとんど役に立ちません。)

引数を与えない場合には、最後に読み取ったファイルが適用されます。

               An `eof' without an argument uses the last file
               read.  Using `eof()' with empty parentheses is
               very different.  It refers to the pseudo file
               formed from the files listed on the command line
               and accessed via the `<>' operator.  Since `<>'
               isn't explicitly opened, as a normal filehandle
               is, an `eof()' before `<>' has been used will
               cause `@ARGV' to be examined to determine if input
               is available.

while(<>) ループでは、eof や eof(ARGV) を使って、各ファイルの最後を検出すること
ができます。eof() は最後のファイルの終端のみを検出します。
例:
    # 各入力ファイルで行番号をセットする
    while (<>) {
        next if /^\s*#/;        # コメントをスキップ
        print "$.\t$_";
    } continue {
        close ARGV  if eof;     # eof()ではない!
    }

    # 最後のファイルの最終行の前にハイフンを挿入する。
    while (<>) {
        if (eof()) {            # file現ファイルの終端かどうかをチェック
            print "--------------\n";
            close(ARGV);        # close or last; is needed if we
                                # are reading from the terminal
        }
        print;
    }

ヒント:Perl では eof をつかうことはほとんどないでしょう。なぜなら、入力指示子が
データの外に出たときや、エラーがあったときに、undef を返すからです。




Perl5リファレンスに戻る