Perlcritic - 两个参数“开放”错误
我有一个脚本,我正在尝试使用 perlcritic 消除不良做法。
我的一行如下:
open(my($FREESPCHK), $cmdline ) || &zdie($MSG_PASSTHRU,"Error checking free space of file system.");
这给出了这个错误: 在第 xxx 行第 x 列使用了两个参数“open”。参见 PBP 第 207 页。 (严重性:5)
关于如何修复它有什么想法吗?
I have a script and I am trying to elimate bad practices using perlcritic.
One line I have is as follows:
open(my($FREESPCHK), $cmdline ) || &zdie($MSG_PASSTHRU,"Error checking free space of file system.");
This gives this error:
Two-argument "open" used at line xxx, column x. See page 207 of PBP. (Severity: 5)
Any ideas on how to fix it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您使用
--verbose 11
标志,您将获得更详细的错误解释。在这种情况下,您得到的错误如下所示:我通过阅读 perlcritic 文档找到了这一点。
If you use the
--verbose 11
flag, you'll get a far more detailed explanation of the error. In this case, the error you get is looks like this:I found this by reading the perlcritic documentation.
要让 Perl Critic 闭嘴,但没有真正的好处,只需将代码修改为:
但是请注意,从更明显的情况来看,这在任何方面都绝对没有更好:
因为你不是分离出用于直接调用
exec
的令牌。看起来更像是这样:问题是您是否正在运行 shell 命令或只是执行某些操作。如果您的免费支票类似于 df 。 2>/dev/null | 2>/dev/null | awk ....,那么你需要完整的 shell。如果它只是
df
,那么你就不需要。To make Perl Critic shut up, but do no real good at all, just modify the code to:
Note however that this is absolutely no better in any regard whatsoever from the far more obvious:
Because you are not separating out your tokens for calling
exec
directly. That would look more like this:The question is whether you are running a shell command or just exec’ing something. If your free check is something like
df . 2>/dev/null | awk ....
, then you need the full shell. If it is justdf
, then you don’t.