Perl 子程序声明意外的符号

Perl Subroutine Declaration Unexpected Symbols

我一直在查看一些 Perl 代码,其中包含一些对我来说毫无意义的子例程声明。它们显示为:

foo($$$$;$);
foo($$$);

符号“;”是什么意思和“\”在这些声明中的作用是什么?

它们是 "prototypes" - 但 Perl 原型与其他语言中的原型不同,可能不应该使用。

$ 表示函数的标量参数。 ;$ 表示可选的附加标量参数。 $ 表示引用参数。

另请参阅:Why are Perl 5's function prototypes bad?