Как лучше всего превратить файл в строку в 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
Как лучше всего превратить файл в строку в Perl?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.