2011-06-22 106 views
3
my $a = {}; 
my $b = {$a=>''}; 

我知道{}可以用來引用散列鍵,但是{}在這裏意味着什麼?{}在perl中的含義是什麼?

+0

是該樣本代碼的東西你做或者你覺得它在某個地方?因爲它沒有多大意義:) – Flimzy

+0

@ Flimzy,是的這是一個人爲的。 –

+3

好吧...設置$ B = {$ A =>「」}沒有多大意義(這是有效的代碼,但不是很有用),因爲它的鍵值設置爲一個字符串化hashref ..輸出自卸車($ b)看起來像:** VAR1 = {「HASH(0xb62d48)」 =>「」}; **這是不是很可能是有用的:) – Flimzy

回答

11

{}創建一個空匿名散列的引用。閱讀更多here

示例代碼:

use Data::Dumper; 
my $a = {}; 
print "a is " . Dumper($a); 
my %b =(); 
print "b is " . Dumper(\%b); 

輸出:

a is $VAR1 = {}; 
b is $VAR1 = {}; 
+2

hashref不是匿名的,它是哈希值。它不代表hashref,它創建一個。 – ikegami

+0

感謝您糾正我 - 回答相應更新。 – Flimzy

+0

那麼,{}是一個匿名哈希構造函數。它創建一個引用,其值可以存儲在一個變量中。儘管如此,還沒有引用該散列的名稱。你必須使用參考。不過,確實沒有一個匿名參考。 –

8

{},在這種情況下,是匿名哈希構造。

它創建一個新的散列,將curlies內的表達式的結果賦給散列,然後返回對該散列的引用。

換句話說,

{ EXPR } 

大致相當於

do { my %hash = (EXPR); \%hash } 

EXPR可以爲空,什麼都沒有。)

perlref