2011-12-26 5 views
2

J'ai une structure de hachage, où chaque clé correspond à une "valeur", qui est un tableau. J'ai défini et construit cette structure de hachage comme suit:l'approche correcte de connecter un hachage de tableau à un autre hachage de hachage

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

Je suis en train de faire cette structure de hachage à indexer par une autre structure de hachage,

my %chainro 

qui est lui-même un hachage de hachage. Il semble qu'il y ait trois approches différentes pour connecter ces deux structures, je ne suis pas sûr de savoir lequel est correct.

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

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

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

Qu'est-ce que c'est: 'push @ {$ app {$ id}}, $ id'? Est-ce une faute de frappe? Cela n'a aucun sens d'utiliser la même variable pour les valeurs de clé ** et ** dans un hachage. – TLP

Répondre

2

Le dernier:

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

Et vous pouvez alors accéder à un élément:

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

Les -> sont nécessaires lorsque vous accédez à un hachage ou d'un tableau en utilisant une référence plutôt que le hachage ou tableau lui-même.

+0

Point-virgule manquant après la première ligne, devrait par "mon% app;" –

+0

Dan, merci. Pour évaluer un élément, pourquoi ne pas utiliser $ chainro -> {$ ro} -> {$ id} -> [$ index] – user785099

+0

Parce que '% chainro' est un hachage et que $ chainro' n'existe pas. Si vous souhaitez utiliser '$ chainro-> stuff', alors $ chainro' doit être une référence. Par exemple, vous pouvez dire '$ chainro = \% chainro' et l'expression que vous avez donnée sera valide. – Dan

Questions connexes