gpt4 book ai didi

perl - -CONSTANT 的歧义使用解析为 -&CONSTANT()

转载 作者:行者123 更新时间:2023-12-04 17:48:51 24 4
gpt4 key购买 nike

我试图在我的 Perl 脚本中将魔数(Magic Number)声明为常量,如 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
$

如果我在减号和 CONSTANT 之间插入一个空格,警告就会消失。 .它使表达比我想要的更加通风,但它有效。

不过,我很好奇:它警告我的歧义是什么?我不知道它可以被解析的任何其他方式。

(来自 Debian“squeeze”的 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(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23215511/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com