2

我目前正在运行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 版本,看看这是否可行。

4

1 回答 1

4

如何perl -c通过过滤器引导输出,该过滤器丢弃您不感兴趣的警告(它通过正则表达式找到这些警告)。然后,如果您有任何警告或错误输出,您将无法提交到 VCS。如果没有这样的输出,提交到 VCS。

于 2013-01-21T18:36:09.297 回答