我正在学习子程序参考。我写了一个代码,但它不工作
use strict;
use warnings;
sub test1 {
#$arg = shift;
print "arg";
}
sub test2 {
return \&test1;
}
&test2;
输出什么都没有。任何想法为什么我的代码不起作用。
我正在学习子程序参考。我写了一个代码,但它不工作
use strict;
use warnings;
sub test1 {
#$arg = shift;
print "arg";
}
sub test2 {
return \&test1;
}
&test2;
输出什么都没有。任何想法为什么我的代码不起作用。
&test2
几乎与test2()
. 它运行 test2,它返回对 test1 的引用,但不运行它。您必须取消引用引用才能调用引用的代码:
test2->();
甚至
test2()->();
首先,
&test2;
是调用子程序的一种糟糕方式。&
如果您甚至不知道它的作用,请不要使用!那应该是
test2;
或者
test2();
关于您的问题:您永远不会调用返回的子例程!
test2()->();
您正在返回对子例程的引用。您需要取消引用才能实际调用它:
&{test2()}