2012-10-23 118 views
1

我想弄清楚究竟是什么在这个简单的语句正在处理一个匿名函数:返回返回标值

sub testReturn { 
    return sub { 
     my $val = shift; 
     return $val; 
    } 
} 

my $num = testReturn(1); 
print $num; 

被调用时,它输出:

CODE(0x9c63b34) 

当我试图让它只返回1的值。谢谢。

回答

7

您的函数返回另一个函数作为匿名代码块。 你可以调用代码来为你做一些事情,如:

my $anonsub = testReturn(); # $anonsub is CODE object 
my $num = &$anonsub(1);  # here this code is called 
print $num; 
+6

或'我的$ NUM = testReturn() - >(1);' – ysth

+2

'我的$ NUM = $ anonsub - >(1 );' –