禁用错误qw外括号的Perl警告

PP.*_*PP. 2 perl

自从最近升级Debian以来,我已经让Perl抱怨qw运算符周围没有额外的括号.

作为系统管理员,这是不可接受的.它打破了mod_perl应用程序的左,右和中心.

如何在禁用此警告的情况下运行Perl?我可以用Perl解释器运行一个标志吗?请注意,编辑源不是一个选项.

Dav*_*oss 8

这在Perl 5.14中有所改变 - 见perldelta.

使用qw(...)作为括号

从历史上看,解析器自欺欺人地认为qw(...)文字总是括在括号中,因此你有时可以省略它们周围的括号:

for $x qw(a b c) { ... }
Run Code Online (Sandbox Code Playgroud)

解析器不再以这种方式对自己说谎.用括号括起列表文字,如下所示:

for $x (qw(a b c)) { ... }
Run Code Online (Sandbox Code Playgroud)

这已被弃用,因为$ i(1,2,3){...}中的括号不是表达式语法的一部分.它们是语句语法的一部分,而for语句需要字面括号.qw表达式获得的合成括号仅用于表达语法的一部分.

看起来您可以关闭警告,no warnings 'qw'但是修复代码要好得多.


Mic*_*ton 5

作为系统管理员,我发现不良代码是不可接受的.

当然,最好的答案是修复有问题的perl脚本.

如果您的企业不允许您修复有问题的perl脚本,那么请不要升级Debian.

你有任何风险.

  • 我不会尝试在不支持它的平台上运行代码.其中一个必须给. (3认同)