我同意大多数时候print
不会失败。但是,您可以通过创建一个.perlcriticrc
文件并将这些行添加到其中来禁用此功能(就像我一样):
# Check all builtins except "print"
[InputOutput::RequireCheckedSyscalls]
functions = :builtins
exclude_functions = print
这在Perl::Critic::Policy::InputOutput::RequireCheckedSyscalls中有描述
此外,如果您不同意 Brutal 设置的所有政策,您可以使用其他 4 个不那么残酷的设置之一。该工具是高度可配置的。
这是一个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:排序和汇总 perlcritic 输出