【问题标题】:How do I copy an array using a reference in Perl?如何使用 Perl 中的引用复制数组?
【发布时间】:2010-02-11 21:30:04
【问题描述】:

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

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

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

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

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

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

我收到“不是数组引用”错误

【问题讨论】:

标签: perl hash arrays pointers


【解决方案1】:

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

试试

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

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

perllol 中的血腥细节。

【讨论】:

  • 从技术上讲,您不需要使用scalar 来获取长度,但我可能会保留它。
【解决方案2】:

作为调试的一般辅助工具,请查看Data::Dumper。它对于探究数据结构的内部是非常宝贵的。

【讨论】:

  • 我正在使用它,但这只会告诉我那里有一个数组(这就是我知道的)。由于我可以访问该数组并进一步向下打印值,我知道这不是问题。我需要的是能够遍历该数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-26
  • 2022-01-15
  • 2018-10-19
  • 1970-01-01
  • 1970-01-01
  • 2021-03-23
  • 1970-01-01
相关资源
最近更新 更多