1

私はいくつかの未定義の番号を渡しています。perlのサブルーチンへの配列のサブルーチンでこれらの個々の配列を取得したいので、ループを実行できます。しかし、私はできなかったので、配列の数を渡そうとしました。ただし、シフトを使用して配列から個々の要素を削除できるため、配列でも同じことができます。つまり、配列の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 に答える