Wie rufe ich eine Perl-hash-Wert nur, wenn der Schlüssel vorhanden ist?
Code:
%a = ( 1 => "ONE" ,
2 => "TWO" ,
3 => " Three", );
$test_value = 1 ;
foreach $key (sort(keys %a)) {
if ($key == $test_value ) {
print $a{$key};
}
}
Ich will nur erreichen Sie den gleichen Vorgang in sehr kurzer Weg. Gibt es eine Tastenkombination dafür?
Wow, es ist so, ich habe reiste zurück in die Zeit von 1996!
InformationsquelleAutor joe | 2009-07-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, das ist, was Sie suchen:
Der Rückgabewert wird
undef
.Sie können testen: if( exists ${$test_value} ) { print ${$test_value}; // warnen, wenn es existiert und null ist }
die "exists" - keyword war, was er suchte, die Antwort ist in der Frage 😉
InformationsquelleAutor Chris Harris
InformationsquelleAutor Robin Smidsrød
Als dies ist ein array von hashes, die Sie zuerst gehen, um das array und dann auf das element mit dem Schlüsselwert.
InformationsquelleAutor Kishore Roy
Versuchen Sie dies :
InformationsquelleAutor Bimlesh Sharma
Unter der Annahme, dass die $test_value wäre eine variable von einer Art, möchten Sie vielleicht so etwas wie
oder sogar
je nachdem, wie lesbar Sie wollen es 🙂
In diesem Fall möchten Sie wahrscheinlich prüfen Sie hier, wenn $a{$test_value} definiert ist, aber allgemein könnte dies gibt false zurück, wenn der Wert undefiniert. Verwenden Sie existieren, um zu überprüfen, für diesen Fall, die prüfen, ob der Schlüssel in dem hash nicht, wenn der Wert definiert ist.
Sie wollen für die Verwendung von 'existiert', nicht 'definiert' , oder autovivification stattfinden wird, und der Wert beginnt zu existieren.
InformationsquelleAutor Vagnerr
Lesbar? 🙂
Diese oneliner geben Sie die gleiche Sache:
Nein, autovivification passiert nur beim Zugriff auf verschachtelte Werte. ${$foo}{$bar} autovivify $foo, auch wenn es nicht vorhanden ist, und auch wenn es nur die überprüfung auf die Existenz/definedness.
InformationsquelleAutor Crenshaw