【问题标题】:Perl calling subroutine with leading '&' [duplicate]Perl调用带有前导'&'的子例程[重复]
【发布时间】:2014-03-21 10:26:45
【问题描述】:

我时不时地看到 Perl 脚本在调用子例程时使用前导 '&'。 这是遗产,还是有任何好处? 因为调用不带 & 号的子程序也可以。

sub mysub {
        print "mysub\n"; 

}

mysub;
&mysub;

谢谢/赫尔曼

【问题讨论】:

标签: perl subroutine ampersand


【解决方案1】:

使用& 调用通常是一种代码味道,让人不知道自己在做什么,并且处于 Perl4 思维模式。在您的具体示例中,它的工作原理完全相同。但是,使用& 调用会禁用函数原型,因此高级用户可能会在某些情况下使用它。在这种情况下,您应该会在调用旁边看到评论为什么。

【讨论】:

  • Perl4 思维模式。可能是通过谷歌搜索和挑选坏例子来学习的
  • 非常感谢,我现在很清楚了。在我的特殊情况下,真正的子程序有一个原型甚至是空原型(不知道怎么说):sub mysub() { ... }。仅当您使用 & 禁用函数原型时才有效。
  • 查看 mysub() 旁边的括号。仅当您使用 & 禁用函数原型时,使用 () 原型调用此子例程才有效,例如 &mysub;
  • 其实mysub;和&mysub;并不完全相同。后者等价于&mysub(@_),而不是&mysub()。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-12
  • 1970-01-01
相关资源
最近更新 更多