此问题在此处已有答案:
How do pass one array and one string as arguments to a function?(5个答案)
5个月前关闭。
我有以下命令,我把变量“$bus”和“$value”放在子busbitFill中。
而且潜艇可以成功地吃掉$bus,但是$value不起作用。请告诉我我错在哪里...。
....some code that generate $index, $bus and $value...
print "index=$index\n bus=$bus\n value=$value\n"; #<=all variable printed successfully
&busbitFill($bus, @array0, $value);
sub busbitFill {
my($bus, @array, $val) = @_;
print "val1: $val\n"; #<=but when $value goes into sub "busbitFill"
} # the sub cannot print $val
<This is the printed result for first row in above code>
index=AA[0]
bus=[2:0]
value=110
1条答案
按热度按时间zf9nrax11#
你不能把数组传递给subs,只能传递标量。
与相同
现在,你知道
@_
中有多少个元素,你把它们赋给$bus, @array, $val
。第一个被赋给$buf
。但是剩下的参数中有多少应该赋给@array
?Perl没有办法知道。所以它把剩下的所有参数赋给@array
。请改为传递数组的指涉。
不要忘记,
$array
现在是对数组的引用,而不是数组,sub的代码必须考虑到这一点。