相关疑难解决方法(0)

我何时应该使用&调用Perl子例程?

我听说人们不应该&用来调用Perl subs,即:

function($a,$b,...);
# opposed to
&function($a,$b,...);
Run Code Online (Sandbox Code Playgroud)

我知道一个参数列表变成可选的,但在某些情况下哪些是适合使用的,&以及你绝对不应该使用它的情况?

当省略时,性能增加如何发挥作用&呢?

perl subroutine

48
推荐指数
3
解决办法
3万
查看次数

perl中&function和function()之间的区别

可能重复:
我何时应该使用&来调用Perl子例程?

在perl脚本中,为什么调用函数的方法有时会被不同地编写.我看到&功能,有时候功能().它们是否相同,这只是一种人们想要炫耀的风格?如果它们是相同的,为什么它们都可用,是不是只需要一个?我猜这两种方法之间存在一些语义差异,这些方法将它们彼此区分开......但在什么样的情况下呢?

---由于我因超时原因无法回答我自己的问题 - 我正在更新问题部分的答案.当我有机会更新答案块时,我会把它放在那里.

我在"学习Perl"一书中找到了相关的文字.但感谢提示.第4章:子程序 - 省略&符号.

我对perl函数的&符号用法更感兴趣.如果在调用之前已经定义了子例程,则可以在不调用函数的情况下调用子例程,同时调用类似于调用内置函数的函数.如果要调用的函数使用与内置函数之一相同的名称(如果在调用之前定义),则还用于区分内置函数和用户定义函数.

()的用法仅仅是为了证明将参数传递给子例程是合理的,而如果不使用,则默认的当前参数列表以@_的形式传递.如果在子程序的()中指定了参数,则假定它是一个子程序,即使先前在解析时没有定义,也会被调用.

perl

18
推荐指数
2
解决办法
2万
查看次数

在调用Perl sub时使用&符号和parens

#!/usr/bin/perl

sub t {
  print "in t\n";
  print "@_\n";
  &s;
}

sub s {
  print "in s\n";
  print "@_\n";
}

t(1,2);
print "out\n";
print "@_\n";
Run Code Online (Sandbox Code Playgroud)

输出:

in t
1 2
in s
1 2
out
Run Code Online (Sandbox Code Playgroud)

如您所见,在没有传递参数时&s输出1 2.这是一个功能还是一个bug?

测试版本为5.8.8.

perl

14
推荐指数
2
解决办法
1792
查看次数

标签 统计

perl ×3

subroutine ×1