使用“perl -c”验证语法但忽略特定错误?

时间:2013-01-21 18:30:16

标签: perl syntax syntax-error

我目前正在运行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版本,看看这是否是一种可行的解决方法。

1 个答案:

答案 0 :(得分:4)

如何通过一个过滤器来引导perl -c的输出,该过滤器会抛弃你不感兴趣的警告(它通过正则表达式找到它们)。然后,如果您还有任何警告或错误输出,则无法提交VCS。如果没有剩下这样的输出,则提交VCS。