2012-02-22 29 views
0

"testhash"をハッシュにし、配列または配列を含む "hashelm"というキーを使用します。配列の配列のハッシュ要素

私はこれを実行します。

$testhash{hashelm}=(
     ["1A","1B"], 
     ["2A","2B"] 
); 

print Dumper(%testhash); 

をしかし、私は出力としてこれを取得:

$VAR1 = 'hashelm'; 
$VAR2 = [ 
      '2A', 
      '2B' 
     ]; 

私はより多くのような何か期待:私は何をしないのです

$VAR1 = 
    hashlelm => (
     [ 
      '1A', 
      '1B' 
     ]; 
     [ 
      '2A', 
      '2B' 
     ]; 
    ) 

を?? 私はのためにperlを使用してきましたが、これは本当に私に困っています!

答えて

5

ハッシュにはスカラー値しか格納できません。 (["1A", "1B"], ["2A", "2B"])はリスト値です。このスカラーコンテキストで評価すると、リスト内の最後の項目、つまり["2A", "2B"]のみが取得されます。あなたは、ハッシュにリスト値を参照を保存する必要があります。

$testhash{hashelm} = [ ["1A","1B"], ["2A","2B"] ]; 

list value constructors上のperlのドキュメントの詳細をお読みください。

+0

Wow - この後も、リストと配列の違いは決して分かりません。しかし、スカラー値だけを格納するハッシュについては、かなりの意味があります。ありがとう! – Brad

5

これは動作します:

$testhash{hashelm}=[ 
     ["1A","1B"], 
     ["2A","2B"] 
]; 

あなたは無名配列のために角括弧を使用する必要があります。