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

$BASEDIR = &getcwd();

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

非常感谢 !

最佳答案

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

$ 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没有原型。 &不能用于命名运算符(即perlfunc的功能,例如print),因此一些初学者在子例程上使用它来将它们与运算符区分开。我相信这是流行的Perl书中推荐的一种做法。

10-06 07:03