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

nor*_*dum 1 arrays perl

我正在传递一些未定义的没有.数组到perl中的子程序我想在子程序中得到这些单独的数组,所以我可以运行循环.但由于我无法如此,所以我尝试传递数组的数量.但是因为我们可以使用shift从数组中删除单个元素,我们可以对数组执行相同的操作,即是否存在类似于Shift for array的函数.

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
        }
Run Code Online (Sandbox Code Playgroud)

一个更好的解决方案是,如果我能够在不传递$ count数组的情况下做同样的事情.

小智 5

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

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

sub mysub
{
  my @array = @{$_[0]};
  foreach (@array)
  {
    print $_
  }
}
Run Code Online (Sandbox Code Playgroud)