子例程引用不起作用

时间:2013-09-23 11:05:20

标签: perl

我正在学习子程序参考。我写了一段代码,但它无法正常工作

use strict;
use warnings;
sub test1 {
#$arg = shift;
print "arg";
}

sub test2 {
return \&test1;
}

&test2;

输出无效。任何想法为什么我的代码不起作用。

3 个答案:

答案 0 :(得分:5)

&test2几乎与test2()相同。它运行test2,它返回对test1的引用,但不运行它。您必须取消引用该引用以调用引用的代码:

test2->();

甚至

test2()->();

答案 1 :(得分:3)

首先,

&test2;

是一种调用子程序的糟糕方式。如果你甚至不知道它的作用,请不要使用&!那应该是

test2;

test2();

关于你的问题:你永远不会调用返回的子程序!

test2()->();

答案 2 :(得分:1)

您将返回对子例程的引用。您需要取消引用才能实际调用它:

&{test2()}