2

私は現在perl -c filename、ファイルの構文に問題がないかどうかを確認するために実行しています。そうである場合は、VCSにコミットできます。

これで、チェックするスクリプトの一部にsetuidビットが設定されており、これは完全に問題ありません。これによるとperldiag、私は警告を受け取ります:

Args must match #! line at /home/user/filename line 1.

の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 に答える