Распечатать данные после самосвала

У меня есть эта структура с 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'
                 }
               ]
    };

У меня вопрос: как взять данные и напечатать по одному? Я хочу напечатать имя, тег и доблесть. Для моего программного обеспечения необходимо взять название магазина и дополнительные данные, например, тип

1 ответ

Решение

Похоже, что структура - это хеш-ссылка, содержащая массив хешей и т. Д. И, очевидно, когда вы упоминаете "имя", вы подразумеваете "содержание" по языку. Аналогично, кажется, что когда вы упоминаете "тег", вы имеете в виду "тип". Мой ответ будет основан на этих предположениях.

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";
}

Существует несколько страниц документации по Perl, которые могут пригодиться вам в будущем, когда вы научитесь управлять ссылками и структурами данных с помощью Perl: perlreftut, perlref, а также perldsc, Доступ к ним из вашей собственной системы как perldoc perlreftut, например.

Другие вопросы по тегам