我目前正在运行perl -c filename
以确定文件的语法是否正确。如果是,我们可以将其提交给 VCS。
现在,一些要检查的脚本已经setuid
设置了位,这完全没问题。根据perldiag
这就是我收到警告的原因:
Args must match #! line at /home/user/filename line 1.
如何抑制单次运行的警告perl -c
?该脚本必须使用可变参数调用,所以我想做一个忽略这个问题的语法检查——这在上下文中不是真正的问题。
这就是我想摆脱我的过滤器脚本的原因:它需要逐字计算输出行数,然后根据相关行数调整退出代码。这是相当乏味的。
更多细节。事实证明,“警告”实际上是一个错误,perl -c
如下所示perldoc perldiag
:
(F) A fatal error (trappable).
[...]
Args must match #! line
(F) The setuid emulator requires that the arguments Perl was invoked with
match the arguments specified on the #! line. Since some systems impose a
one-argument limit on the #! line, try combining switches; for example,
turn -w -U into -wU.
请注意这是一个相当老的系统 ( Red Hat Linux release 7.3 (Valhalla)
) 和一个相当老的 Perl ( Summary of my perl5 (revision 5.0 version 6 subversion 1)
...)
似乎在较新的 Perl 版本中已弃用此错误。我将尝试更新 Perl 版本,看看这是否可行。