use strict;
use warnings;
sub XX { 30 };
my $rnd = 3;
my $z = -XX * $rnd;
给出错误:
Can't use string ("3") as a symbol ref while "strict refs" in use
这没有帮助:
my $z = -XX * ($rnd);
我得到下一个错误:
Scalar found where operator expected at game4.pl line 7, near "* ($rnd"
(Missing operator before $rnd?)
syntax error at game4.pl line 7, near "* ($rnd"
Execution of game4.pl aborted due to compilation errors.
如何强制使用
EXPR
而不是 GLOB
取消引用? 最佳答案
几个选项。
明确告诉 Perl 您没有将参数传递给 XX
。
my $z = -XX() * $rnd;
对子程序使用旧式调用约定(我真的不推荐这个)。
my $z = -&XX * $rnd;
将子程序定义为不带参数。
sub XX() { 30 };
但最好的解决方案是使用内置的
constant
pragma。use constant XX => 30;
关于perl - 如何强制 EXPR 而不是 GLOB 取消引用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58376080/