这个变量声明中{}括号的含义是什么?

时间:2011-01-13 13:20:57

标签: perl

我在一些代码中看到了一个声明:

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

如果他们提到{大括号,那就是连接。我真的不明白这是什么。

我的猜测是最后一个变量就像$vartesttest1cnt2

3 个答案:

答案 0 :(得分:11)

嗯,不,不是真的。 %var是哈希数组哈希的哈希值。

%var是哈希

$var{$test} => $var{"test"}是哈希

$var{$test}{$test1} => $var{"test"}{"tes2"}是哈希

$var{$test}{$test1}{"cnt"} => $var{"test"}{"tes2"}{"cnt"}是一个数组

$var{$test}{$test1}{"cnt"}[$i]=$var_val$var_val分配给数组中的索引2

答案 1 :(得分:2)

不,%var是哈希。

test是哈希的关键。

$var{$test}变为$var{"test"},然后变成该密钥存储的任何值,这显然是另一个哈希值。其键$test1会导致另一个哈希,其中有一个键cnt,该键导致一个数组,其索引$i(2)设置为$var_val

答案 2 :(得分:0)

这是一个多维数据结构。 %var是哈希值。 $var{$test}是一个哈希元素。 $var{$test}{$test1}表示您的哈希元素是对另一个哈希的引用。 $var{$test}{$test1}{"cnt"}表示$var{$test}{$test1}本身就是对哈希的引用。 $var{$test}{$test1}{"cnt"}[$i]表示前一级别是对数组的引用。不明白参考是什么? Try perldoc