首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何遍历Perl数组引用?

如何遍历Perl数组引用?
EN

Stack Overflow用户
提问于 2009-08-27 16:28:55
回答 3查看 24.1K关注 0票数 19

我有一个数组,它是一个结构的成员:

代码语言:javascript
复制
$self->{myArray} = ["value1", "value2"];

我试着用下面的代码遍历它:

代码语言:javascript
复制
my @myArray = $self->{myArray};
foreach my $foo (@myArray){
    #Do something with the using $foo
    ...
}

问题是'foreach‘循环只执行一次(我希望它执行两次,因为@myArray有两个元素:"value1“和"value2")。

当我检查@myArray数组大小时,我发现它的大小是1。我在这段代码中做错了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-08-27 16:32:55

我相信:

代码语言:javascript
复制
$self->{myArray} returns a reference.

你想要返回数组:

代码语言:javascript
复制
@{$self->{myArray}}
票数 32
EN

Stack Overflow用户

发布于 2009-08-27 16:31:36

$self->{myArray}是一个数组引用。您需要取消引用它。

代码语言:javascript
复制
my @myArray = @{ $self->{myArray} };

在这种情况下,Data::Dumper模块非常有用。例如,如果@myArray的行为与预期不符,您可以运行此代码来揭示问题。

代码语言:javascript
复制
use Data::Dumper;
print Dumper(\@myArray);
票数 11
EN

Stack Overflow用户

发布于 2009-08-27 16:32:02

$self->{myArray}是一个数组引用,而不是数组-你不能在哈希表中存储实际的数组,只能存储引用。试试这个:

代码语言:javascript
复制
my $myArray = $self->{myArray};
for my $foo (@$myArray){
   # do something with $foo
}

您可能还想看看perldoc perlref

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1342229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档