15

重複の可能性:
Perl でファイルを文字列に丸呑みする最良の方法は何ですか?

このコードは、ファイルの内容を Perl の変数に読み込む良い方法ですか? それは機能しますが、使用すべきより良い方法があるかどうか知りたいです。

open INPUT, "input.txt";
undef $/;
$content = <INPUT>;
close INPUT;
$/ = "\n";
4

3 に答える 3

35

一般的な慣行は次のようなものだと思います。

    my $content;
    open(my $fh, '<', $filename) or die "cannot open file $filename";
    {
        local $/;
        $content = <$fh>;
    }
    close($fh);

3 つの引数を使用するopen方が安全です。ファイル ハンドルを変数として使用することは、最新の Perl で使用する方法であり、使用すると、ハードコードされた の代わりに、ブロック終了時にlocal $/の初期値が復元されます。$/\n

于 2010-11-03T13:58:51.737 に答える
15
use File::Slurp;
my $content = read_file( 'input.txt' ) ;
于 2010-11-03T14:12:27.953 に答える
3

モジュールのインストールが可能な環境にいる場合は、次を使用することをお勧めしますIO::All

use IO::All;
my $contents;
io('file.txt') > $contents;

いくつかの可能性は少しおかしくなりますが、非常に便利な場合もあります。

于 2010-11-03T14:10:53.603 に答える