2011-12-26 15 views
2

私はハッシュ構造を持っています。各キーは配列である "値"に対応しています。次のように私は、このハッシュ構造を定義し、構築:配列のハッシュをハッシュの別のハッシュに接続する正しい方法

my %app 
push @{$app{$id}}, $id; 

私はハッシュのハッシュである、それ自体、別のハッシュ構造によってインデックス付けされるように、このハッシュ構造を作るために

my %chainro 

をしようとしています。これらの2つの構造を接続する3つの異なるアプローチがあるように見えますが、どれが正しいかはわかりません。

$chainro{$ro}{$id} = $app{$id} 

@{$chainro{$ro}{$id}} = @{$app{$id}} 

$chainro{$ro} = \%app; 
+1

これは何ですか: 'push @ {$ app {$ id}}、$ id'?それはタイプミスですか?ハッシュのキー**と**の値に同じ変数を使用するのは意味がありません。 – TLP

答えて

2

最後に:

my %app 
push @{$app{$id}}, $id; 
$chainro{$ro} = \%app; 

そして、あなたはその要素にアクセスすることができます:あなたがではなく、参照を使用してハッシュや配列にアクセスしているとき

$chainro{$ro}->{$id}->[$index] 

->が必要とされていますハッシュまたは配列そのもの。

+0

最初の行の後にセミコロンがない場合は、 "my%app;"とする必要があります。 –

+0

ダン、ありがとう。要素を評価するには、なぜ$ chainro - > {$ ro} - > {$ id} - > [$ index] – user785099

+0

を使用できないのですか? '%chainro'はハッシュであり、 '$ chainro'は存在しません。 '$ chainro-> stuff'を使いたいなら、' $ chainro'は参照でなければなりません。例えば、 '$ chainro = \%chainro'と言うと、与えた式は有効です。 – Dan

関連する問題