我正在传递一些未定义的号码。数组到perl中的子程序我想在子程序中得到这些单独的数组,所以我可以运行循环。 但由于我无法如此,所以我尝试传递数组的数量。但是,由于我们可以使用shift从数组中删除单个元素,我们可以对数组执行相同的操作,即是否有类似于 Shift 的数组。
sub iFrame
{
my $count=shift @_;
for (my $i=1;$i<=$count;$i++)
{
my @iFrame =@_; #need to remove this @iFrame each time
print qq[<iframe src="$iFrame[0]" width="$iFrame[1]"
height="$iFrame[2]" frameborder="$iFrame[3]" name="$iFrame[4]"></iframe>];
# and some other code
}
更好的解决方案是,如果我能够在不传递$ count数组的情况下执行相同的操作。
答案 0 :(得分:5)
最好的方法是传递对数组的引用,然后在子例程中取消引用它。像这样:
use strict;
my @array = qw(a b c);
mysub(\@array);
sub mysub
{
my @array = @{$_[0]};
foreach (@array)
{
print $_
}
}
答案 1 :(得分:3)
将它们作为参考传递。
sub iFrame
{
for my $iFrame (@_)
{
print qq[<iframe src="$iFrame->[0]" width="$iFrame->[1]"
height="$iFrame->[2]" frameborder="$iFrame->[3]" name="$iFrame->[4]"></iframe>];
# and some other code
}
}
iFrame(
[ $src1, $width1, $height1, $frameborder1, $name1 ],
[ $src2, $width2, $height2, $frameborder2, $name2 ],
);