web-dev-qa-db-ja.com

Perlでファイルを変数に読み込む

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

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

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

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

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

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

30
n0rd
use File::Slurp;
my $content = read_file( 'input.txt' ) ;
15
Quentin

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

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

いくつかの可能性は少しおかしくなりますが、それらも非常に便利です。

2
Daniel Martin