什么& @意味着sub?

时间:2011-09-21 05:17:27

标签: perl

  

可能重复:
  What does the function declaration “sub function($$)” mean?

sub t(&@) {
    print @_;
}
t {print 1};

我尝试将&@更改为&$,但它会失败。

它的语言是什么,以便我可以搜索?

4 个答案:

答案 0 :(得分:5)

&@是一个子程序原型。这使您可以创建类似于内置grep函数的语法(接受 BLOCK ,然后接受 LIST )。 LIST 甚至可以是空列表:()

&$使用时会强制在标量上下文中计算第二个参数(必须)。由于t {print 1};中没有第二个参数,因此无法编译。

perldoc perlsub了解有关子程序原型的更多信息。

答案 1 :(得分:1)

我不太清楚你想要代码做什么,但是你要为你的sub创建一个原型,请参阅perldocs&表示子t将块作为第一个参数,@表示其余参数是数组。

当你调用你的函数时,你传递一个参数,块{print 1},那就是你打印出来的 - CODE引用作为字符串。 &$失败的原因是你没有传递第二个参数。这对&@来说很好,因为第二个参数是空数组。

答案 2 :(得分:0)

您正在寻找的术语是“perl函数原型”。

答案 3 :(得分:0)