1
我有一個問題,我希望你可以幫忙,因爲我是哈希和哈希引用的新東西嗎?Perl訪問哈希/哈希引用數據結構中的元素
我有以下數據結構:
$VAR1 = {
'http://www.superuser.com/' => {
'difference' => {
'http://www.superuser.com/questions' => '10735',
'http://www.superuser.com/faq' => '13095'
},
'equal' => {
'http://www.superuser.com/ ' => '20892'
}
},
'http://www.stackoverflow.com/' => {
'difference' => {
'http://www.stackoverflow.com/faq' => '13015',
'http://www.stackoverflow.com/questions' => '10506'
},
'equal' => {
'http://www.stackoverflow.com/ ' => '33362'
}
}
如果我要訪問的所有網址中的關鍵'difference'
這樣我就可以再上網址,執行一些其他動作,什麼是正確的或首選方法訪問這些元素?
例如,我將結束與以下網址,我可以再做東西在foreach
迴路搭配:
http://www.superuser.com/questions
http://www.superuser.com/faq
http://www.stackoverflow.com/faq
http://www.stackoverflow.com/questions
------編輯------
代碼訪問上面顯示的數據結構下方的元素:
my @urls;
foreach my $key1 (keys(%{$VAR1})) {
print("$key1\n");
foreach my $key2 (keys(%{$VAR1->{$key1}})) {
print("\t$key2\n");
foreach my $key3 (keys(%{$VAR1->{$key1}{$key2}})) {
print("\t\t$key3\n");
push @urls, keys %{$VAR1->{$key1}{$key2}{$key3}};
}
}
}
print "@urls\n";
使用上面的代碼爲什麼會出現以下錯誤?
Can't use string ("13238") as a HASH ref while "strict refs" in use at ....
非常感謝我正在尋找的東西。如果我只想訪問每個stackoverflow網址末尾的數字,例如'13015','10506'和'33362',代碼會是什麼樣子。我需要學習如何訪問數據結構的不同部分,感謝您的幫助。 – 2013-02-20 13:20:08
你能告訴我代碼會怎麼樣,如果我只想訪問在每個stackoverflow網址結束時的數字,即13015,10506和33362。非常感謝 – 2013-02-20 13:39:34
@ perl-user它簡單。密鑰''http:// www.stackoverflow.com /''的值是一個散列參考。該散列引用中的鍵是「差異」和「等於」,它們的值也是散列引用。這些哈希引用的值是您之後的值。就這樣堆棧'for'循環,你就會好起來的。如果您不確定發生了什麼,請使用'Data :: Dumper'檢查結果。 – TLP 2013-02-20 13:56:15