Я согласен, что большую часть времени print
не подведет. Но вы можете отключить эту функцию, создав файл .perlcriticrc
и добавив в него следующие строки (как я):
# Check all builtins except "print"
[InputOutput::RequireCheckedSyscalls]
functions = :builtins
exclude_functions = print
Это описано в Perl :: Criti c :: Policy :: InputOutput :: RequireCheckedSyscalls
Кроме того, если вы не согласны со всеми политиками параметра Brutal, вы можете просто использовать один из четырех других менее жестоких параметров. Инструмент легко настраивается.
Вот тривиальный случай, когда print
может потерпеть неудачу (печать в закрытый файловый дескриптор):
open my $fh, '>', 'out';
print $fh "555\n";
close $fh;
print $fh "888\n" or die "print failed: $!";
# we shouldn't get here
print "777\n";
В таком коротком коде очевидно, что вы просто закрыл дескриптор файла, и ты бы никогда не попытался распечатать его. Но, если у вас много (плохо спроектированного) кода, возможно, это произойдет.
Есть и другие причины, по которым print
может завершиться неудачей, например, если другой процесс пришел и удалил каталог, или отключил права на запись в вашем открытом файле.
Я создал для себя скрипт для запуска perlcritic
, который облегчает доступ к POD для заданной политики: Сортировка и обобщение perlcriti c output