perl foreach循环数组,简单的问题

时间:2010-11-11 10:34:15

标签: arrays perl loops for-loop

非常简单的perl问题,但让我很困惑。

foreach $val (@{$obj->something()}) {
    # this works
}

@array = $obj->something();
foreach $val (@array) {
    # this does not
}

我需要做些什么才能完成第二项工作(即:单独分配数组),我已经使用了第一种形式,但并不真正理解它的作用有何不同。

1 个答案:

答案 0 :(得分:8)

大概:

@array = @{$obj->something()};

从第一个示例开始,看起来$obj->something()返回一个数组引用,您需要取消引用它。

此外,您应该use strict;use warnings;,并声明您的变量

my @array = @{$obj->something()};
foreach my $val (@array) {
    # this does not
}

这样可以更容易地找到错误(尽管可能不是这个错误),即使在三行脚本中也是如此。