新手求教!

新手求教!

小弟刚开始学习perl,在看到用散列实现多维数组的时候发现),[],{},这3对括号用起来挺混乱的,不知道是否有什么规律!每种括号都用在什么情况下!

请赐教,谢谢!

简单的理解:
() list构建符
[] 构建匿名数组
{}构建匿名hash
@array = (1..10);
$arrref = [1,2,3];
$hashref = {Jan=>'1',Feb=>'2'};
多谢斑竹!
书中还有些问题感觉难于理解,请大家指点一下:
原文如下:
可以生成匿名数组如下:
$arrayReference=[1,2,3];
然后数组引用可以存进另一数组中,声称多位数组,如下所示:
$arrays[0]=$arrayReference;
通常生成多维数组时,将一个数组的引用赋值给另一数组的单元,如下所示:
@codes[1]=\@codeNumbers;
这里首先要生成数组@codeNumbers,然后再被赋值给@codes数组,这里左边之所以要用@符号,而不是$,是因为元素codes[1]本身也是一个数组。
而使用匿名数组可以通过使用匿名数组操作符([]),跳过生成中间数组的步骤,如下所示:
@codes[1]=[1..10];
@codes[2]=[a,b..k];

问题:$arrays[0]=$arrayReference;array[0]也是一个数组,那为什么不像codes一样,也是用符号@呢?
如果说引用变量总是一个标量!那么问题应该出在@codes[1]=\codeNumbers上,是不是应该改成$codes[1]呢?
或者说@codes[1]和$codes[1]这两种方式都是可以的。因为codes[1]既是一个标量(引用),也是一个数组。不知道这样理解对不对呢?

我写了下面这段代码,运行起来没有问题,感觉上这样是能说得通的!
#!/usr/bin/perl
@codenumber1=(1..5);
@codenumber2=(6..10);
@codes=();
$codes[1]=\@codenumber1;         //如果把这两行的第一个字符换成@,结果是一样的
$codes[2]=\@codenumber2;
for($i=0;$i<5;$i++){
    print $codes[1][$i]," ",$codes[2][$i],"\n";
}

看精华区“引用”
TKS!
那篇引用的文章我已经仔细看过了!
确实学到不少东西!但还是一头雾水!
比如
问题(1):还是上面那个问题:或者说@codes[1]和$codes[1]这两种方式都是可以的。因为codes[1]既是一个标量(引用),也是一个数组。不知道这样理解对不对呢?

问题(2);书中的一段代码:$wife{"jacob"}=("leah","rachel","bilhah","zilpah");
我觉得这对圆括号应该换成种括号,这样才生成一个匿名数组,我验证了一下,小括号也是可以的,但大括号就不行,这又是为什么呢?