【发布时间】:2015-06-03 22:52:15
【问题描述】:
我正在尝试将参数传递给 perl 子例程,但无论出于何种原因,子例程内部的参数都是空的。
...
...
...
print "Passing arguments $a, $b, $c, $d \n";
beforeEnd($a, %b, $c, $d);
sub beforeEnd() {
my ($a, %b, $c, $d) = @_;
print "a is $a, b is $b, c is $c, d is $d \n";
}
打印语句的输出让我知道出了点问题。奇怪的部分?前 2 个参数正确传递。
> Passing arguments 1, (1,2,3), 2, 3
> a is 1, b is (1,2,3), c is , d is
任何帮助将不胜感激。
【问题讨论】:
-
您正在传递
%b,但正在打印$b。 -
赋值中的列表变量将接收函数的所有剩余参数。
-
如果你想传递一个列表而不把它作为单独的参数展开,你应该使用数组引用。
标签: perl parameters subroutine