在翻斗车后打印数据

时间:2016-07-25 14:21:59

标签: perl data-dumper

我有数据转储程序的这个结构:

$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'
                 }
               ]
    };

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

1 个答案:

答案 0 :(得分:4)

看起来结构是包含散列的arrayref的hashref,依此类推。显然,你提到“名字”的地方,你的意思是“语言”的“内容”。同样地,似乎你提到“标签”的意思是'类型'。我的答案将基于这些假设。

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

->{content}之间的{en}以及{en}[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";
}

如果要打印所有语言,可以执行以下操作:

perlreftut

当您学习使用Perl操作引用和数据结构时,有几个Perl文档页面可能对您有用:perlrefperldscperldoc perlreftut。例如,以get { return _instance ?? (_instance = new TestClass()); }从您自己的系统访问它们。

相关问题