Perl引用的一个问题

Perl引用的一个问题

a = (1,2,3,4);
$array_header = "sym_ref_array";
my $i,$j;
for($i = 0; $i < 3; $i++)
{
        $array_name=$array_header.$i;
        for($j = 0; $j < 4; $j++)
       {
                $$array_name->[$j] = $a[$j] + $i;
       }
}

生成的数组sym_ref_array0,sym_ref_array1,sym_ref_array2,为什么只能用$sym_ref_array0->[3]这种形式引用相应数据元素,而不能使用数组@{$sym_ref_array0},如:print join "," @{$sym_ref_array0}
饿。。。偶咋看不懂你写的,某非偶太菜。。
$array_name感觉是个标量啊
$$array_name->[$j],咋还能这么用啊,这感觉是个数组啊
可以的吧。

BTW:符号引用不推荐使用。


QUOTE:
原帖由 flw 于 2007-9-24 17:31 发表
可以的吧。

BTW:符号引用不推荐使用。

是不是上次提到的那个帖子
如果这样使用,use strict就会报警那个?


QUOTE:
原帖由 perljoker 于 2007-9-24 17:33 发表

是不是上次提到的那个帖子
如果这样使用,use strict就会报警那个?

对。
use strict 缺省情况下会阻止符号引用。
谢谢flw老大提醒,我只是试一下看看自己理解的对不对,但上面代码在我这儿用不了,是语法的问题?


QUOTE:
原帖由 shappen 于 2007-9-25 10:23 发表
谢谢flw老大提醒,我只是试一下看看自己理解的对不对,但上面代码在我这儿用不了,是语法的问题?

如果是这个目的的话,你就不应该写这么复杂的程序。

$array_header = "sym_ref_array";
$array_name = $array_header . '0';
$array_name->[0] = 10;
$$array_name[1] = 20;
print "@$array_name";

足以说明问题。
请教
$array_name = $array_header . '0';
这一句有什么用啊?好像不写也可以的


QUOTE:
原帖由 perljoker 于 2007-9-25 11:03 发表
请教
$array_name = $array_header . '0';
这一句有什么用啊?好像不写也可以的

这一句用来演示如何动态地生成一个变量。
也就是说,生成的数组的名称是由两部分组成的,并且是运行时可以变化的(比如从配置文件中读取、或者自动递增,等等)
恩,刚才把一些情况试验了下
看来符号引用还是有好用的地方,等于本身多存了一个信息,而不是地址
谢谢