2016-07-25 93 views
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' 
       } 
       ] 
    }; 

我的問題是:如何利用數據和打印一對一? 我想打印名稱,標籤和valore。 對於我的軟件是必要的商店名稱和更多的數據,例如類型

+3

如果我理解正確,您想知道如何訪問數據結構中的值。你想遍歷作爲_field_元素的散列引用中的_field_數組引用和訪問鍵。我建議你閱讀[perlreftut](http://perldoc.perl.org/perlreftut.html)和[perlref](http://perldoc.perl.org/perlref.html),瞭解Perl中的數據結構。 – simbabque

+0

這個數據是否起源於XML?你是如何產生它的? – Borodin

+0

沒有名稱字段。你的意思是內容嗎?你想如何處理一個空數組的語言?你想如何處理數組中有多個元素的語言? – ikegami

回答

4

它看起來像結構是一個hashref包含散列的arrayref,等等。顯然你提到「名字」的地方是指語言的「內容」。同樣,看起來你提到'標籤'的意思是'類型'。我的答案將基於這些假設。

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,並perldsc。例如,從您自己的系統訪問它們,例如perldoc perlreftut