如何在Perl中使用引用复制一个数组?

4

如果我按照以下步骤操作,它就可以正常工作:

print $ref->{element}->[0]->{data};

我想知道数组中有多少个引用,以便我可以遍历它们,但我很难做到这一点。
以下是我尝试过的代码,但它不起作用:
my @array = @$ref->{element};

foreach(@array) {
    print $_->{data};
}

我收到了一个“不是数组引用”的错误。

1
你可能会发现 perldoc perldsc http://perldoc.perl.org/perldsc.html 很有用。此外,Perlmonks的 References Quick Reference 也很方便:http://www.perlmonks.org/?node_id=69927 - daotoad
2个回答

8

列表的哈希值很棘手。 @$ref->{element} 被解析为 (@$ref)->{element},解引用 $ref 而不是 $ref->{element}

尝试使用:

my @array = @{$ref->{element}}

或者

my $size = scalar @{$ref->{element}}

perllol中的血腥细节。


从技术上讲,您不需要使用“标量”来获取长度,但我可能会保留它。 - Brad Gilbert

-2
作为调试的一般辅助工具,可以看看Data::Dumper。它对于深入了解数据结构非常有用。

我正在使用那个,但那只告诉我那里有一个数组(这就是我知道的方式)。由于我可以访问该数组并打印更多下方的值,所以我知道那不是问题所在。我需要的是能够循环遍历该数组。 - Jeremey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接