可能重复:
What does the function declaration “sub function($$)” mean?&@是什么意思?
sub t(&@) {
print @_;
}
t {print 1};
我试图改变&@
到&$
,它会失败。
这是什么术语,以便我可以搜索?
可能重复:
What does the function declaration “sub function($$)” mean?&@是什么意思?
sub t(&@) {
print @_;
}
t {print 1};
我试图改变&@
到&$
,它会失败。
这是什么术语,以便我可以搜索?
&@
是子程序原型。这使您可以创建类似于内置函数的语法(接受BLOCK,然后使用LIST)。 列表甚至可以是空列表:()
。
&$
在使用时将强制在标量上下文中评估第二个参数(这是强制的)。由于t {print 1};
中没有第二个参数,它将无法编译。
阅读有关子程序原型的更多信息:perldoc perlsub
。
'&$'和'&; $'有什么区别? –
';'使参数的其余部分可选。 –
您正在寻找的术语是“perl function prototypes”。
这是一个原型。 – Alex
请参阅代码示例中的第8行[此处](http://perldoc.perl.org/perlsub.html#Prototypes) –
另请参阅[this old rant](http://www.perlmonks.org/?node_id= 406231)关于为什么你可能不应该使用原型。 –