在perl脚本中,为什么调用该函数的方法有时会以不同方式编写。我看到& function,有时候是function()。它们是否相同,这只是一种人们想要炫耀的风格?如果它们是相同的,为什么它们都可用,是不是只需要一个?我猜这两种方法之间存在一些语义差异,这两种方法将它们区分开来......但在什么样的情况下呢?
---由于我因超时原因无法回答我自己的问题 - 我正在更新问题部分的答案。当我有机会更新答案块时,我会把它放在那里。
我在'Learning Perl'一书中找到了相关文字。但感谢提示。第4章:子程序 - 省略&符号。
我对perl函数的&符号& 用法更感兴趣。如果在调用之前已经定义了子例程,则可以在调用类似于调用内置函数的函数时调用子例程而不使用& 。 &安培;如果要调用的函数使用与内置函数之一相同的名称,也可以用来区分内置函数和用户定义函数,前提是它在被调用之前定义。
()的用法仅仅是为了证明将参数传递给子例程是合理的,而如果不使用,则默认的当前参数列表以@_的形式传递。如果在子程序的()中指定了参数,则假定它是一个子程序,即使先前在解析时没有定义,也会被调用。
答案 0 :(得分:18)
它有非常具体的用途:
&
告诉Perl忽略sub的原型。&
可以允许您使用来电者的@_
。 (&foo;
没有任何parens或参数)。goto &foo;
和defined &foo
。\&foo
)。有些人(大多数是初学者)使用它来区分用户子和内置函数,因为内置函数不能以&
开头。
答案 1 :(得分:4)
如@manatwork和@KeithThompson所述,您可以在这些文章中找到相关信息:
&
或不使用函数调用的详细信息 - perlsub: Perl Subroutines: Description。