我目前正在运行perl -c filename
以确定文件的语法是否正常。如果是,我们可以将其提交给VCS。
现在,一些要检查的脚本设置了setuid
位,这是完全没问题的。根据{{1}},这就是我收到警告的原因:
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.
)和一个相当古老的Perl(Red Hat Linux release 7.3 (Valhalla)
...)
似乎在较新的Perl版本中不推荐使用此错误。我将尝试更新Perl版本,看看这是否是一种可行的解决方法。
答案 0 :(得分:4)
如何通过一个过滤器来引导perl -c
的输出,该过滤器会抛弃你不感兴趣的警告(它通过正则表达式找到它们)。然后,如果您还有任何警告或错误输出,则无法提交VCS。如果没有剩下这样的输出,则提交VCS。