Чтение файла в переменной в 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;
Некоторые из возможностей немного сумасшедшие, но они также могут быть весьма полезными.