2009-07-01 42 views
1

代碼:如何僅在密鑰存在時檢索Perl哈希值?

%a = (1 => "ONE" , 
     2 => "TWO" , 
     3 => " Three",); 
$test_value = 1 ; 

foreach $key (sort(keys %a)) { 
    if ($key == $test_value) { 
     print $a{$key}; 
    } 

} 

我只是想實現非常短的方式相同的操作。這有什麼捷徑嗎?

+4

哇,這就像我回到1996年的時間! – jrockway 2009-07-02 10:13:28

回答

8

我認爲這是你在找什麼:

print $a{$test_value}; 
+0

如果$ a {$ test_value}未定義Wat將會返回? – joe 2009-07-01 15:36:22

+3

@Krish:返回值將是`undef`。 – 2009-07-01 16:18:07

+2

可以測試: if(exists $ a {$ test_value}){ print $ a {$ test_value}; //會發出警告,如果它存在且爲空 } – Massa 2009-07-01 18:05:37

-1

假設$ test_value將是某種形式的變量,你可能要像

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

甚至

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

取決於如何readab你想要它:-)

-2

是否可讀? :)

這oneliner會給你同樣的事情:

defined $a{$testvalue} and print $a{$testvalue}; 
6
print $a{$test_value} if exists $a{$test_value}; 
0

試試這個:

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

由於這是散列的數組你首先得去那個陣列然後通過其鍵值訪問該元素。

print "${@{$h{LMN}{xyz}{c}}[2]}{Number}"; 
相關問題