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

Sir*_*rex 3 arrays perl loops for-loop

真的很简单的perl问题,但让我很困惑.

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

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

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

msc*_*cha 8

大概:

@array = @{$obj->something()};
Run Code Online (Sandbox Code Playgroud)

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

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

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

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