2

最近 Debian をアップグレードして以来、qw 演算子の周りに余分な括弧がないことについて Perl が泣き言を言うようになりました。

システム管理者として、これは容認できません。左、右、および中央の mod_perl アプリケーションが壊れています。

この警告を無効にして Perl を実行するにはどうすればよいですか? Perl インタープリターで実行できるフラグはありますか? ソースの編集はオプションではないことに注意してください。

4

2 に答える 2

8

これは Perl 5.14 で変更されました - perldeltaを参照してください。

括弧としての qw(...) の使用

歴史的に、パーサーは qw(...) リテラルが常に括弧で囲まれていると考えるように自分自身をだましました。

for $x qw(a b c) { ... }

パーサーは、このように自分自身に嘘をつくことはなくなりました。次のように、リスト リテラルを括弧で囲みます。

for $x (qw(a b c)) { ... }

for $i (1,2,3) { ... } の括弧は式の構文の一部ではないため、これは推奨されません。これらはステートメント構文の一部であり、for ステートメントではリテラルの括弧が必要です。qw 式が取得した合成括弧は、式構文の一部として扱われることのみを意図していました。

で警告をオフにできるように見えますがno warnings 'qw'、コードを修正した方がはるかに良いでしょう。

于 2013-09-12T15:45:06.950 に答える
5

システム管理者として、悪いコードは受け入れられません。

もちろん、最善の答えは、問題のある perl スクリプトを修正することです。

問題のある perl スクリプトを修正できない場合は、Debian をアップグレードしないでください。

どちらにしてもリスクがあります。

于 2013-09-11T14:44:00.937 に答える