2016-04-12 24 views
1

以下の形式でクエリに出力しています。 itemthreeの値をすべて取得する必要があります。Perlでハッシュの配列を含むハッシュのハッシュを反復処理する方法はありますか?

さまざまなことを試した後、私は最初の値だけを抽出することができました。私はitems要素内のすべてitemthreeの値を得るために、ループでそれを実行する方法を理解できませんでした。

これは

$VAR1 = { 

    one => { msgSize => 103 }, 

    two => { 
     items => [ 
      { itemOne => -1, itemthree => "AB_CD_EF", itemtwo => 0 }, 
      { itemOne => -1, itemthree => "XY_YZ_AB", itemtwo => 10 }, 
     ], 
    }, 

    someOtherStuff => "abc", 
} 
+0

$hash{two}{items}を変更する、それが実際にはハッシュリファレンスなら

my @item3s; for my $item (@{ $hash{two}{items} }){ push @item3s, $item->{itemthree}; } print "$_\n" for @item3s; 

をあなたは '使用していますXML :: Simple'? – Borodin

+0

Perlでネストされたデータ構造を扱うのは、非常に便利なスキルです。Perlに付属の[perlreftut dcocumentation](http://perldoc.perl.org/perlreftut.html)をお勧めします。しかし、あなたが@BorodinとしてXML :: Simpleを使用しようとしている場合、私はあなたがこの[XML :: LibXML tutorial](http://grantm.github.io/perl-libxml- by-example /)を使用します。 –

+0

私はちょうどPerlを始めているので、この種の学習教材は非常に役に立ちます。ありがとうございました! – jaySingh

答えて

1

あなたはハッシュ持っている私のデータのダンプと仮定される:$hash->{two}{items}

+0

それはうまくいった。ありがとう。ヘルプをよろしく! – jaySingh

+0

あなたは大歓迎です。問題の解決に役立つ場合は、緑色のチェックマークをクリックして回答を受け入れてください。 – stevieb

+0

@ jaySingh:「うまくいった」ことは励みになるかもしれませんが、何が起きているのか、なぜ解決策が働いたのかを理解することが重要です。 Perlのコードは透過的でわかりやすいものであり、あなたが探している振る舞いに入るようなプログラムを「パスワード」の一種として扱うのは間違いです。それは自然言語に非常に似ています。私はあなたがメソポタミアで二重ウイスキーを注文することができることを誇りに思うだろうと確信していますが、氷のない2つのダブルボードを2回尋ねるために何度もやり直す必要があるため、空の業績です。あなたがスメニア語を学んだら、すべて流れていくだろう – Borodin