2011-01-13 112 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