将数组传递给例程出错

时间:2017-03-20 14:53:06

标签: perl

在下面的代码中,我期望ScheduleRequestWrite()中的输出为:5,10

sub ProcessItem
{
    my @writeVal = ("5,10");

    foreach my $str (@writeVal)
    {
        print "\nProcessItem = $str\n";
    }
    ScheduleRequestWrite(\@writeVal);
}

sub ScheduleRequestWrite()
{
   my @write_value = $_[0];

   foreach my $str (@write_value)
   {
        print "\n$str\n";
   }
}

ProcessItem();

但我得到了:ARRAY< 0x2ccf8>

有谁可以帮我指出我的错误。提前谢谢!

1 个答案:

答案 0 :(得分:6)

您传入数组引用\@writeVal,然后在数组@write_value中使用该引用...所以您的数组@write_value中只有一个项目,对另一个数组的引用。

您可能意味着my @write_value = @{$_[0]};制作了数组的副本,或者您可能打算直接遍历原始数组:

sub ScheduleRequestWrite
{
   my $write_value = $_[0];

   foreach my $str (@$write_value)
   {
        print "\n$str\n";
   }
}

(您也不想要()原型,因为 正在接受参数!只需关闭原型。)