首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在Perl中使用&getcwd()而不是getcwd()?

为什么在Perl中使用&getcwd()而不是getcwd()?
EN

Stack Overflow用户
提问于 2019-11-08 08:45:16
回答 2查看 112关注 0票数 3

我对Perl语言很陌生,在我使用的代码中有以下一行:

代码语言:javascript
复制
$BASEDIR = &getcwd();

我想知道为什么在调用getcwd之前有一个getcwd,而且我找不到任何关于它的参考。有人能帮我吗?

非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-08 08:57:19

它导致子程序的原型被忽略。

代码语言:javascript
复制
$ perl -e'
   sub f($@) { print("@_\n"); }
   my @a = (4,5,6);
   f(4,5,6);
   f(@a);
   &f(@a);
'
4 5 6
3
4 5 6

但这可能不是这里使用它的原因。毕竟,Cwd::getcwd没有一个原型。&不能用于命名操作符(例如,[医]漏斗的函数,例如print),因此一些初学者在子程序中使用它来区分它们和操作符。我相信这是一本流行的Perl书推荐的实践。

票数 7
EN

Stack Overflow用户

发布于 2019-11-08 09:02:15

简单地说,它是可选的,除非您运行的是一个非常旧的perl版本。

有关更多细节,请参见perlsub手册页(根据环境运行perldoc perlsubman perlsub )。

可以使用显式的"&“前缀调用子例程。在现代Perl中,"&“是可选的,如果子例程已经预先声明,那么括号也是可选的。当仅仅命名子例程时,"&“不是可选的,例如当它被用作定义()或undef()的参数时。如果您希望使用"&$subref()“或"&{$subref}()”构造来执行带有子例程名称或引用的间接子例程调用,也不是可选的,尽管"$subref->()“表示法解决了这个问题。有关这一切的更多信息,请参见perlref。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58763156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档