如何使用Perl中的引用复制数组?

时间:2010-02-11 21:30:05

标签: perl hash arrays pointers

如果我执行以下操作,它可以正常工作:

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

我想看看数组中有多少引用,以便我可以遍历它们,但是我很难做到这一点。

这是我尝试过的代码,但它不起作用:

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

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

我收到“Not a ARRAY reference”错误

2 个答案:

答案 0 :(得分:8)

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

尝试

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

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

perllol中的Gory详细信息。

答案 1 :(得分:-2)

作为调试的一般帮助,请给Data::Dumper一下。它对于挖掘数据结构的内部结构是非常宝贵的。