2011-01-13 116 views
2

我的一些代碼,看到喜歡的聲明:{}括號在這個變量聲明中的含義是什麼?

$test = "test"; 
$test1 = "tes2"; 
$i  = 2; 
$var{$test}{$test1}{"cnt"}[$i] = $var_val; # What exactly is this? 

如果他們提{梅開二度,這是串聯。我真的不明白這是什麼。

我的猜測是最終變量就像$vartesttest1cnt2

+3

請參閱[Perlintro](http://perldoc.perl.org/perlintro.html#Perl-variable-types):標量,數組和散列。 – Benoit 2011-01-13 13:39:30

+0

也是,`.`是連接。 `($ test。$ test1)```testtes2'` – mkb 2011-01-13 14:29:23

回答

11

呃,不,不是。 %var是數組散列哈希的散列。

%var是散列

$var{$test} =>$var{"test"}是散列

$var{$test}{$test1} =>$var{"test"}{"tes2"}是散列

=>$var{"test"}{"tes2"}{"cnt"}是一個數組

$var{$test}{$test1}{"cnt"}[$i]=$var_val分配$var_val到索引2在陣列

+0

`%var`是一個散列! `$ var`是undefined :) – mkb 2011-01-13 14:03:54

0

這是一個多維數據結構。 %var是一個散列。 $var{$test}是一個散列元素。 $var{$test}{$test1}表示您的散列元素是對另一個散列的引用。 表示$var{$test}{$test1}本身就是對散列的引用。 $var{$test}{$test1}{"cnt"}[$i]表示前一級是對數組的引用。不明白什麼是參考? Try perldoc

2

不,%var是散列。

test是散列中的關鍵。

$var{$test}變成$var{"test"}然後變成存儲在該鍵上的任何值,這顯然是另一個散列。其密鑰$test1導致另一個散列,其中有一個密鑰cnt,這導致一個數組,其索引$i(2)設置爲$var_val