Распечатать данные после самосвала
У меня есть эта структура с 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
, например.