今天看了Perl教程“数据结构”部分多维数组的动态创建。数组实际上是一维的,因此所谓数组实际上是一维引用数组,及数组元素是一个数组的引用。依此延伸,便可创建多维数组。介绍了动态多维数组创建有三种可行方案,并给出了示例。
- @array=somefunc($j); $AoA[$j]=[@array]; #最安全
- @array=somefunc($j); @{$AoA[$j]}=@array; #有点危险
- my @array=somefunc($j); $AoA[$j]=/@array; #快速但危险,取决于数组的自有性
下面代码是教程中给出的例子,与方案一相似却不正确。@AoA不是二维数组,而是一维数组,元素内容为数组@array的长度。
for ($j=1;$j<=3;$j++) {
@array = &somefunc($j);
$AoA[$j] = @array;
}
我补全了脚本代码,somefunc()用于生成一个长度为10 的数组。一个可执行的perl脚本test.pl
my @AoA;
my ($i,$j);
for ($j=1;$j<=3;$j++) {
print("主函数传参【$j】/n");
@array = &somefunc($j);<