1

我传递了一些未定义的不。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 的情况下做同样的事情。

4

2 回答 2

5

最好的方法是传递对数组的引用,然后在子例程中取消引用它。像这样:

use strict;
my @array = qw(a b c);
mysub(\@array);

sub mysub
{
  my @array = @{$_[0]};
  foreach (@array)
  {
    print $_
  }
}
于 2013-10-11T04:05:06.430 回答
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 ],
);
于 2013-10-11T04:58:38.617 回答