自从最近升级 Debian 以来,我一直抱怨 Perl 在 qw 运算符周围没有额外的括号。
作为系统管理员,这是不可接受的。它正在左右和中心破坏 mod_perl 应用程序。
如何在禁用此警告的情况下运行 Perl?有没有可以用 Perl 解释器运行的标志?请注意,编辑源不是一个选项。
自从最近升级 Debian 以来,我一直抱怨 Perl 在 qw 运算符周围没有额外的括号。
作为系统管理员,这是不可接受的。它正在左右和中心破坏 mod_perl 应用程序。
如何在禁用此警告的情况下运行 Perl?有没有可以用 Perl 解释器运行的标志?请注意,编辑源不是一个选项。
这在 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'
但修复代码会更好。
作为系统管理员,我发现糟糕的代码是不可接受的。
当然,最好的答案是修复有问题的 perl 脚本。
如果您的企业不允许您修复有问题的 perl 脚本,那么请不要升级 Debian。
无论哪种方式,您都有风险。