2014-01-23 48 views
1

爲什麼取消引用散列引用到散列&將其分配給標量會給出不相關的值(至少對我而言)?Perl:將一個哈希引用解引用到標量中?

代碼:

my $hash = { 
     1 => 9, 
     2 => 10, 
     3 => 11, 
     4 => 12, 
     5 => 13, 
     6 => 14, 
     7 => 15, 
     8 => 16, 
     }; 

my $dereferenced = %$hash; 

print $dereferenced; 

Perl版本:5.12.4

操作系統:Windows 7

打印的值是

7/16 

無論是有事情做用Perl內部?

+1

你會期望'$ dereferenced'包含什麼? – Borodin

+0

my $ dereferenced =%$ hash; < - 在這裏你想要做%%deilferenced%sigil,或\%$ hash從而傳遞一個參考 – Davs

+0

謝謝!對不起,我發佈了重複的問題!現在我明白了總桶大小= 16。包含一個或多個元素的桶數= 7因此7/16。這個散列有更多的碰撞,它似乎! – InnovWelt

回答

1

標量不能包含哈希或數組,只能引用它們。

但即使他們可以,當你在一個標量賦值的右側使用散列,它是在標量上下文,如果這兩個散列爲空,在標量上下文的哈希出具虛假或如果不是(例如「7/32」),則在散列內描述桶使用的字符串。

+0

雖然我在perl上工作了很長時間,但我不知道perl中的哈希概念是如何工作的。很高興知道這個新名詞叫'鬥'。謝謝! – InnovWelt

+0

@InnovWood *術語* Bucket *對於成爲更好的Perl程序員並不是很有幫助,但知道***標量上下文***的含義是。 – Wolf