在下面的代码中,我期望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>
有谁可以帮我指出我的错误。提前谢谢!
答案 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";
}
}
(您也不想要()
原型,因为 正在接受参数!只需关闭原型。)