自从最近升级Debian以来,我已经让Perl抱怨qw运营商没有额外的括号。
作为系统管理员,这是不可接受的。它打破了mod_perl应用程序的左,右和中心。
如何在禁用此警告的情况下运行Perl?我可以用Perl解释器运行一个标志吗?请注意,编辑源不是一个选项。
答案 0 :(得分:8)
这在Perl 5.14中有所改变 - 请参阅perldelta。
使用qw(...)作为括号
历史上,解析器自欺欺人地认为qw(...) 文字总是用括号括起来,结果就是你 有时可能会省略它们周围的括号:
for $x qw(a b c) { ... }
解析器不再以这种方式对自己说谎。包装列表文字 在这样的括号中:
for $x (qw(a b c)) { ... }
这已被弃用,因为$ i(1,2,3)的括号中{ ...}不是表达式语法的一部分。他们是其中的一部分 语句语法,for语句需要文字括号。 qw表达式获得的合成括号仅为 意图被视为表达式语法的一部分。
您似乎可以使用no warnings 'qw'
关闭警告,但是修复代码会好得多。
答案 1 :(得分:5)
作为系统管理员,我发现不良代码是不可接受的。
当然,最好的答案是修复有问题的perl脚本。
如果您的企业不允许您修复有问题的perl脚本,那么请不要升级Debian。
你有任何风险。