func2如何知道上下文?

时间:2011-07-29 07:27:50

标签: perl

func1(func2);

我们知道Perl需要知道要评估的上下文,但在上面的例子中,func2如何在标量或列表上下文中知道它?

2 个答案:

答案 0 :(得分:5)

如果func1没有原型(或@原型),它将是列表上下文。如果func1的原型为$,那么它将是标量上下文。

警告:请不要使用原型,它们是evil

答案 1 :(得分:2)

显然。这是清单。

$ perl
sub f1 { print "called f1\n" } 
sub f2 { print "called f2\n"; print wantarray ? "list": "scalar"; print "\n"; }
f1(f2);
^d
called f2
list
called f1

为什么呢?这完全是另一个问题 - 我假设因为函数参数是隐式列表,所以可能会出现这种情况。