Как лучше всего превратить файл в строку в Perl?

Мне нравится делать это с infile помощью блока do, в котором string-manipulation я локализую @ARGV, чтобы я мог output-file использовать оператор ромба, чтобы fileinput творить за меня файловую string магию.

 my $contents = do { local(@ARGV, $/) = $file; <> };

Если вам нужно, чтобы input-files это было немного более надежно, вы str можете легко превратить это infile в подпрограмму.

Если вам нужно что-то действительно надежное, которое обрабатывает всевозможные особые случаи, используйте File::Slurp. Даже если вы не собираетесь его использовать, взгляните на источник, чтобы увидеть все дурацкие ситуации, с которыми он должен справиться. File::Slurp имеет big security problem, который perl5 не имеет решения. Частично file-io это связано с его неспособностью str правильно обрабатывать кодировки. Даже file-io в моем быстром ответе есть file-io эта проблема. Если вам нужно output-file обработать кодировку (возможно, потому, что input-file вы не все делаете UTF-8 по input-file умолчанию), это расширяется infile до:

my $contents = do {
    open my $fh, '<:encoding(UTF-8)', $file or die '...';
    local $/;
    <$fh>;
    };

Если вам не нужно изменять str файл, вы можете использовать file-io File::Map.

perl

string

file-io

file

2022-11-10T13:57:32+00:00