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

bde*_*dem 3 perl

我是Perl语言的新手,在我使用的代码中有以下一行:

$BASEDIR = &getcwd();
Run Code Online (Sandbox Code Playgroud)

我想知道为什么&对的调用前面有一个getcwd,而我找不到关于它的任何参考。有人可以帮我吗?

非常感谢 !

ike*_*ami 6

这将导致子例程的原型被忽略。

$ 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
Run Code Online (Sandbox Code Playgroud)

但这可能不是它在这里使用的原因。毕竟,Cwd::getcwd没有原型。&不能用于命名运算符(即perlfunc的功能,例如print),因此一些初学者在子例程上使用它来将它们与运算符区分开。我相信这是流行的Perl书中推荐的一种做法。

  • 那是对的。我想我从来没有用过它。 (2认同)