非常简单的perl问题,但让我很困惑。
foreach $val (@{$obj->something()}) { # this works } @array = $obj->something(); foreach $val (@array) { # this does not }
我需要做些什么才能完成第二项工作(即:单独分配数组),我已经使用了第一种形式,但并不真正理解它的作用有何不同。
答案 0 :(得分:8)
大概:
@array = @{$obj->something()};
从第一个示例开始,看起来$obj->something()
返回一个数组引用,您需要取消引用它。
此外,您应该use strict;
和use warnings;
,并声明您的变量
my @array = @{$obj->something()};
foreach my $val (@array) {
# this does not
}
这样可以更容易地找到错误(尽管可能不是这个错误),即使在三行脚本中也是如此。