獲取

2013-03-19 47 views
0

我試圖讓哈希散列的鍵哈希散列的鍵,總是有錯誤:獲取

use strict; 

my %oop_hash =(); 
$oop_hash{'wfh'}{'ppb'} = "451103"; 
print (keys $oop_hash{'wfh'})."\n"; #1st try 
print (keys %oop_hash{'wfh'})."\n"; #2nd try 

我怎樣才能哈希散列的鑰匙?

+0

添加'使用警告',你會發現它有什麼問題。 – varnie 2013-03-19 14:56:37

+0

使用Perl 5.14或更高版本,您的第一個版本可以正常工作。 – 2013-03-19 16:30:50

回答

3

這是一個有點棘手。正確的語法是

keys %{$oop_hash{'wfh'}} 

此外,正如你所寫的,你的print statement will not quite do what you want。由於Perl解析該行的方式,"\n"不會附加到該字符串。你必須說:

print +(keys %{$oop_hash{'wfh'}}),"\n"; 
print ((keys %{$oop_hash{'wfh'}}),"\n"); 
+0

我很困惑,他們都給我「1」。我正在使用Perl v5.14.2。 – varnie 2013-03-19 15:01:13

+0

我看到你更新了你的帖子。現在它工作正常! – varnie 2013-03-19 15:03:32

+0

使用逗號運算符,而不是連接('.')運算符。後者使'keys'在標量上下文中得到評估。 – mob 2013-03-19 15:05:07

0

那就是:

#!/usr/bin/perl 
use strict; 
use warnings; 

my %oop_hash =(); 
$oop_hash{'wfh'}{'ppb'} = "451103"; 
print join ", ", keys $oop_hash{'wfh'} , "\n"; # "ppb, " 
+0

您需要使用Perl v5.14作爲'keys $ hashref'語法。 – mob 2013-03-19 14:59:22

+0

它仍然是「高度實驗」 – ysth 2013-03-19 15:51:18