#!/usr/bin/perl
use warnings;
use strict;
定义一个2维数组,只要在定义数组,添加多个数组即可
my @matrix = ( [3,4,10],
[2,7,12],
[0,3,4],
[6,5,9],
);
访问2维数组时,首先是子数组在大数组中下标,然后是小数组中元素的下标,
例如
$matrix[2][0] 访问0,
$matrix[1][1] 访问7,
如果修改的话也同样 $matrix[2][0]=10;
修改成数组;
$matrix[2][0]=[7,8,9];
这样$matrix[2][0][0] 可以访问到7;
向2维数组里面push一维数组
my @aaa=(1,2,3);
push @matrix,@aaa;
这样1,2,3是以元素的访问直接存在于@matrix中,如下
@matrix = ( [3,4,10],
[2,7,12],
[0,3,4],
[6,5,9],
1,2,3,
);
向2维数组里面push2维数组
my @bbb=([444,555,666],[777,888,999]);
push @matrix,@bbb;
这样push进去的@bbb是以上子数组方式存在,如下
@matrix = ( [3,4,10],
[2,7,12],
[0,3,4],
[6,5,9],
1,2,3,
[444,555,666],
[777,888,999],
);
由此可以看到,push是将数组中的结构加入到新数组的结尾。
再来看看数组长度,
@matrix 的长度依然是,$#matrix + 1
那么子数组的长度怎么算呢
如果我想访问[777,888,999]怎么访问呢,
$matrix[$#matrix];这个是子数组在数组中下标,那么访问子数组的话@{$matrix[$#matrix]};
同理可得长度为$#{$matrix[$#matrix]} + 1;
展示出数组的结构:
for (my $i=0;$i<=$#matrix;$i++){
for (my $x=0;$x<=$#{$matrix[$i]};$x++){
print $matrix[$i][$x] ."\t" ;
}
print "\n";
}
阅读(1910) | 评论(0) | 转发(0) |