常量将自己呈现为 subs。你可以用 sub 做的事情:
- 将其称为函数 (
FOO
, FOO()
)
- 在覆盖原型时将其作为函数调用 (
&FOO()
)
- 在继承时将其作为函数调用
@_
( &FOO
)
- 将其称为方法 (
__PACKAGE__->FOO
)
- 创建对它的引用(
\&FOO
, *FOO{CODE}
。也是*FOO
需要代码 ref 的地方。)
只有第一个被折叠。因此,您可以使用
$ perl -MO=Concise,-exec -E'use constant FOO=>42; say &FOO()' 2>&1 | grep FOO
5 <#> gv[*FOO] s
$ perl -MO=Concise,-exec -E'use constant FOO=>42; say &FOO' 2>&1 | grep FOO
5 <#> gv[*FOO] s
$ perl -MO=Concise,-exec -E'use constant FOO=>42; say __PACKAGE__->FOO' 2>&1 | grep FOO
6 <.> method_named[PV "FOO"] l
$ perl -MO=Concise,-exec -E'use constant FOO=>42; say+ (\&FOO)->()' 2>&1 | grep FOO
5 <#> gv[*FOO] s
$ perl -MO=Concise,-exec -E'use constant FOO=>42; say *FOO{CODE}->()' 2>&1 | grep FOO
5 <#> gv[*FOO] s
$ perl -MO=Concise,-exec -E'use constant FOO=>42; say *FOO->()' 2>&1 | grep FOO
5 <#> gv[*FOO] s