Чтение файла в переменной в Perl

Возможный дубликат:
Каков наилучший способ вырезать файл в строку в Perl?

Является ли этот код хорошим способом для чтения содержимого файла в переменной в Perl? Это работает, но мне любопытно, есть ли лучшая практика, которую я должен использовать.

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

Ответ 1

Я думаю, что обычная практика выглядит примерно так:

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

Использование 3 аргумента open безопаснее. Использование дескриптора файла как переменной заключается в том, как его следует использовать в современном Perl, а с помощью local $/ восстанавливает начальное значение $/ на конце блока, вместо жестко закодированного \n.

Ответ 2

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

Ответ 3

Обратите внимание: если вы находитесь в среде, где возможно установить модули, вы можете использовать IO::All:

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

Некоторые из возможностей немного сумасшедшие, но они также могут быть весьма полезными.