2

自从最近升级 Debian 以来,我一直抱怨 Perl 在 qw 运算符周围没有额外的括号。

作为系统管理员,这是不可接受的。它正在左右和中心破坏 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 回答