perl – -CONSTANT的不明确使用解析为 – &CONSTANT()
发布时间:2020-12-15 23:20:07 所属栏目:大数据 来源:网络整理
导读:我正试图在我的Perl脚本中将魔术数字声明为常量,如perlsub中所述.但是,我收到警告: $cat foo.perluse warnings ; use strict ;sub CONSTANT() { 5 }print 7-CONSTANT,"n" ;$perl foo.perlAmbiguous use of -CONSTANT resolved as -CONSTANT() at foo.perl
我正试图在我的Perl脚本中将魔术数字声明为常量,如perlsub中所述.但是,我收到警告:
$cat foo.perl use warnings ; use strict ; sub CONSTANT() { 5 } print 7-CONSTANT,"n" ; $perl foo.perl Ambiguous use of -CONSTANT resolved as -&CONSTANT() at foo.perl line 3. 2 $ 如果我在减号和常量之间插入一个空格,警告就会消失.它使表达式比我想要的更通风,但它有效. 不过我很好奇:它警告我的含糊之处是什么?我不知道可以解析任何其他方式. (来自Debian的Perl 5.10.1“挤压”). 解决方法
首先,一些背景.让我们看一下以下内容:
$_ = -foo; -foo是一个字符串文字[1]. $perl -Mstrict -wE'say -foo;' -foo 除非声明了名为foo的子命令. $perl -Mstrict -wE'sub foo { 123 } say -foo;' Ambiguous use of -foo resolved as -&foo() at -e line 1. -123 现在回到你的问题.警告是错误的. TERM(7)不能跟随另一个TERM,因此 – 不能是字符串文字或一元减号运算符的开头.它必须是减法运算符,因此没有歧义. 该警告仍在5.20.0 [2]中发布.我已经提交了bug report. >看马!没有报价! system(grep => ( -R,$pat,$qfn )); >好吧,5.20.0还没有出来,但我们正处于冻结代码冻结状态.这不会在5.20.0中修复. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |