从传递给Perl中子例程的值中移出一个数组

时间:2013-10-11 04:03:07

标签: arrays perl

我正在传递一些未定义的号码。数组到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数组的情况下执行相同的操作。

2 个答案:

答案 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 ],
);