2012-09-29 39 views
0

我有一個哈希看起來像下面當我用自卸車。我想遍歷每個級別並單獨打印所有內容。多層次Perl中的哈希

$VAR1 = { 
      'TP144' => { 
          'LNDN CDR' => [ 
              'NAME XYZ 
         FNAME ABC 
         STATUS MARIED 
         TEST "THIS IS TEST" 
         TEMP!VALUE 0' 
             ], 

這就是它的樣子:L2的值本身就是一個數組。

$VAR1{L1}{L2}=>ARRAY 

任何幫助表示讚賞。

在此先感謝

編輯:謝謝馬特,我找到了該鏈接的答案。這是我做到的。

foreach $L1 (sort keys %VAR1) { 
    print "$L1: { "; 
    for $L2 (sort keys %{ $VAR1{$L1} }) { 
     foreach (@{$VAR1{$L1}{$L2}}) 
     { 
      print $_."\n"; 
     } 

    } 
    print "}\n"; 
} 
+0

@Mat由於該鏈接幫助我找到正確的答案。 – Mardanian

+0

@馬爾代夫 - 這是可行的,但要小心只給它提供相同的數據結構。它不適用於其他結構。 – DVK

回答

3

最簡單的方法是遞歸地這樣做。

  • 檢查你的輸入到遞歸子。

    • 如果輸入是標量,打印

    • 如果輸入爲n數組引用,遍歷每個元素和遞歸地使用你的子

    • 如果輸入是hashref打印元,遍歷每個鍵並遞歸地使用你的子鍵打印該鍵的值。

DONE

+0

如果您在執行這3個步驟中的任何一步時遇到困難,請顯示您嘗試的內容並詢問如何解決該問題。 – DVK

+0

我嘗試這樣做:

while(($key, $value) = each(%VAR1)) { @keyValues = split($;, $key); print "key = [", join(",", @keyValues), "] : value = [", $value, "]\n"; }
但我得到以下錯誤: '鍵= [TP144]:值= [HASH(0x16b6478)]' – Mardanian

+1

@Mardanian - 你讀過的答案?你需要一個遞歸子 – DVK