func1(func2);
我们知道Perl需要知道要评估的上下文,但在上面的例子中,func2
如何在标量或列表上下文中知道它?
答案 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
为什么呢?这完全是另一个问题 - 我假设因为函数参数是隐式列表,所以可能会出现这种情况。