perl
  • perl-data-structures
  • 2011-11-25 109 views 0 likes 
    0

    我不熟悉perl,並且正在嘗試編輯irssi翻譯腳本。從Web請求的結果返回:解析perl數組

    $result = { 
    "data" => { 
        "translations" => [ 
        { 
        "translatedText" => "Halloween" 
        } 
        ] 
    } 
    } 
    

    我怎麼能只獲取translatedText部分,使

    $string = 'Halloween' 
    

    感謝。

    回答

    2

    這將是

    $result->{data}->{translations}->[0]->{translatedText}; 
    

    $result是散列REF。關鍵'數據'指向另一個散列引用,它有一個指向數組ref的關鍵'轉換'。數組ref中的第一個也是唯一的元素有一個關鍵字'translationText',它指向感興趣的數據:'萬聖節'。

    7

    「萬聖節」可以被獲得爲:

    $result->{"data"}->{"translations"}->[0]->{"translatedText"} 
    

    的箭頭的第一個可以被省略後,所以甚至更短的變體將是:

    $result->{"data"}{"translations"}[0]{"translatedText"} 
    

    基本上你有在多個間接尋址不同級別:

    • 參考哈希
    • 它的「數據」鍵是到另一個散列的引用
    • 最後散列是一個數組
    • 該數組的第一元素的引用的「轉換」鍵是將散列的引用
    • 的「該散列的「translatedText」鍵是字符串
    相關問題