【问题标题】:Print data after dumper转储后打印数据
【发布时间】:2016-07-25 14:21:59
【问题描述】:

我有这个带有数据转储器的结构:

$VAR1 = {
      'field' => [
                 {
                   'content' => {
                                'en' => [
                                        'Footware haberdashery leather goods'
                                      ],
                                'de' => [
                                        'Schuhe Kurzwaren und Lederartikel'
                                      ],
                                'it' => [
                                        'Calzature mercerie e pelletterie'
                                      ]
                              },
                   'type' => 'tag',
                   'valore' => 'TAG3'
                 },
                 {
                   'content' => {
                                'en' => [
                                        'Cobbler'
                                      ],
                                'de' => [
                                        'Schuster'
                                      ],
                                'it' => [
                                        'Calzolai'
                                      ]
                              },
                   'type' => 'tag',
                   'valore' => 'TAG24'
                 }
               ]
    };

我的问题是:如何获取数据并一对一打印? 我想打印姓名、标签和价值。 对于我的软件来说,必须使用商店名称和更多数据,例如类型

【问题讨论】:

  • 如果我理解正确,您想知道如何访问数据结构中的值。您想要遍历 field 数组引用并访问作为 field 元素的哈希引用中的键。我建议您阅读 perlreftutperlref 了解 Perl 中的数据结构。
  • 此数据是否源自 XML?你是如何生成它的?
  • 没有名称字段。你是说内容吗?您想如何处理具有空数组的语言?您想如何处理数组中包含多个元素的语言?

标签: perl data-dumper


【解决方案1】:

看起来该结构是一个包含哈希数组引用的哈希引用,依此类推。显然,在您提到“名称”的地方,您的意思是语言的“内容”。同样,您提到“标签”的地方似乎是指“类型”。我的答案将基于这些假设。

foreach my $rec (@{$href->{field}}) {
    print "$rec->{content}->{en}->[0]: $rec->{type}, $rec->{valore}\n";
}

{content}{en} 之间的-> 以及{en}[0] 之间的[0] 是可选的,并且是样式问题。

如果你只是想直接访问元素(在循环之前),你可以这样做:

print $href->{field}->[0]->{content}->{en}->[0], "\n";
print $href->{field}->[0]->{type}, "\n";
print $href->{field}->[0]->{valore}, "\n";

如果您想打印所有种语言,您可以这样做:

foreach my $rec (@{$href->{field}}) {
    print $rec->{content}->{$_}->[0], "\n" foreach sort keys %{$rec->{content}};
    print $rec->{type}, "\n";
    print $rec->{valor}, "\n\n";
}

当您学习使用 Perl 操作引用和数据结构时,有几个 Perl 文档页面可能对您有用:perlreftutperlrefperldsc。例如,从您自己的系统以perldoc perlreftut 访问它们。

【讨论】:

    猜你喜欢
    • 2014-12-12
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多