我有一个数组,它是一个结构的成员:
$self->{myArray} = ["value1", "value2"];
我试着用下面的代码遍历它:
my @myArray = $self->{myArray};
foreach my $foo (@myArray){
#Do something with the using $foo
...
}
问题是'foreach‘循环只执行一次(我希望它执行两次,因为@myArray有两个元素:"value1“和"value2")。
当我检查@myArray数组大小时,我发现它的大小是1。我在这段代码中做错了什么?
发布于 2009-08-27 16:32:55
我相信:
$self->{myArray} returns a reference.
你想要返回数组:
@{$self->{myArray}}
发布于 2009-08-27 16:31:36
$self->{myArray}
是一个数组引用。您需要取消引用它。
my @myArray = @{ $self->{myArray} };
在这种情况下,Data::Dumper
模块非常有用。例如,如果@myArray
的行为与预期不符,您可以运行此代码来揭示问题。
use Data::Dumper;
print Dumper(\@myArray);
发布于 2009-08-27 16:32:02
$self->{myArray}
是一个数组引用,而不是数组-你不能在哈希表中存储实际的数组,只能存储引用。试试这个:
my $myArray = $self->{myArray};
for my $foo (@$myArray){
# do something with $foo
}
您可能还想看看perldoc perlref。
https://stackoverflow.com/questions/1342229
复制相似问题