sub Function(\[$@%]);
这适用于 Windows(Windows 7 上的 Perl v5.14.2),并接受所有 3 种参数。哈希、标量和列表。
然而,Linux 上的相同原型(CentOS 版本 4.5 上的 Perl 5.6.1)给了我
Malformed prototype for main::Function: \[%@$].
在这两个方面,我都在做use 5.006
.
否则,脚本完全相同。
sub Function(\[$@%]);
这适用于 Windows(Windows 7 上的 Perl v5.14.2),并接受所有 3 种参数。哈希、标量和列表。
然而,Linux 上的相同原型(CentOS 版本 4.5 上的 Perl 5.6.1)给了我
Malformed prototype for main::Function: \[%@$].
在这两个方面,我都在做use 5.006
.
否则,脚本完全相同。
该原型在 5.6.1 中并不存在。这是最近添加的,因为它是在 5.14 中添加的。(这意味着它在所有受支持的 Perl 版本中。)
您不能将数组或哈希传递给子,只能传递标量列表。原型导致调用代码获取引用并传递它。这是你可以通过改变明确地做的事情
sub Function(\[$@%]) { }
Function($s);
Function(@a);
Function(%h);
到
sub Function { }
Function(\$s)
Function(\@a)
Function(\%h)
无论如何,原型通常是要避免的。