perl – -CONSTANT的不明确使用解析为 – &CONSTANT()

perl – -CONSTANT的不明确使用解析为 – &CONSTANT(),第1张

概述我正试图在我的Perl脚本中将魔术数字声明为常量,如perlsub中所述.但是,我收到警告: $cat foo.perluse warnings ; use strict ;sub CONSTANT() { 5 }print 7-CONSTANT,"\n" ;$perl foo.perlAmbiguous use of -CONSTANT resolved as -&CONSTANT() 我正试图在我的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 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中修复.

总结

以上是内存溢出为你收集整理的perl – -CONSTANT的不明确使用解析为 – &CONSTANT()全部内容,希望文章能够帮你解决perl – -CONSTANT的不明确使用解析为 – &CONSTANT()所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1260522.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存