0

私はデータダンパーでこの構造を持っています:

$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 対 1 で印刷する方法です。名前、タグ、バロールを印刷したい。私のソフトウェアには、ショップの名前と、タイプなどのその他のデータが必要です

4

1 に答える 1

4

構造体は、ハッシュの配列参照を含むハッシュ参照などのように見えます。そして、明らかに「名前」に言及する場合、言語による「コンテンツ」を意味します。同様に、「タグ」に言及しているところは「タイプ」を意味しているようです。私の答えは、それらの仮定に基づいています。

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 ドキュメント ページがあります: perlreftutperlref、およびperldscperldoc perlreftutたとえば、独自のシステムからそれらにアクセスします。

于 2016-07-25T14:53:40.113 に答える