2009-07-01 4 views

Répondre

8

Je pense que c'est ce que vous cherchez:

print $a{$test_value}; 
+0

si le $ a {$ test_value} n'est pas défini Wat sera de retour? – joe

+3

@Krish: La valeur de retour sera 'undef'. –

+2

vous pouvez tester: si (existe $ par {test_value $}) {print $ a {$ test_value}; // préviendra si elle existe et est nulle } – Massa

-1

En supposant que le $ test_value serait une variable de quelque sorte que vous voudrez peut-être quelque chose comme

if(defined($a{$test_value})){ 
    print $a{$test_value}; 
} 

ou même

print $a{$test_value} if(defined($a{$test_value})) 

en fonction de la façon dont readab le vous voulez :-)

+1

se débarrasser de toutes vos parenthèse sur le dernier pour la meilleure lisibilité. – user105033

+2

Dans ce cas, vous voulez probablement vérifier ici si un $ {test_value $} est définie - mais plus généralement cela pourrait revenir faux si la valeur était FNUD. Utilisez existe pour vérifier ce cas, qui vérifiera si la clé existe dans le hachage, pas si la valeur est définie. – Callum

+0

Vous voulez utiliser 'existe', pas 'défini', ou l'autovivification aura lieu et la valeur commencera à exister. –

-2

Illisible? :)

Ce oneliner vous donnera la même chose:

defined $a{$testvalue} and print $a{$testvalue}; 
+1

Vous voulez utiliser « EXISTE », pas « défini », ou autovivification aura lieu et la valeur commencera à exister. –

+0

Non, l'autovivification ne se produit que lorsque vous accédez à des valeurs imbriquées. $ a {$ foo} {$ bar} va autovivifier $ foo même s'il n'existe pas, et même s'il ne vérifie que l'existence/la définition. –

6
print $a{$test_value} if exists $a{$test_value}; 
0

Essayez ceci:

my @tt = map {$_, if $_ == $test_value} keys %a; 
print "\n @tt"; 
0

Comme il est un tableau de hash vous devez d'abord aller à ce tableau puis accédez à l'élément par sa valeur de clé.

print "${@{$h{LMN}{xyz}{c}}[2]}{Number}"; 
+0

semble - au mieux, ne peut pas vraiment juger de son contenu :-) - comme un commentaire à une autre réponse par rapport à une réponse à la question initiale. Qu'Est-ce que c'est? – kleopatra