这是一个非常简单的Perl问题,但让我感到困惑。
foreach $val (@{$obj->something()}) { # 这个可以工作 }
@array = $obj->something(); foreach $val (@array) { # 这个不行 }
我需要做什么才能使第二个代码块工作(即分配数组),我已经使用了第一种形式,但真的不知道它有什么不同。
很可能:
@array = @{$obj->something()};
从第一个例子来看,$obj->something()
看起来返回的是一个数组引用,你需要对其进行解引用。
另外,你应该使用 use strict;
和 use warnings;
,并且像这样声明你的变量:
my @array = @{$obj->something()};
foreach my $val (@array) {
# this does not
}