实现复杂的数组结构:
Perl 中使用数组的数组是最为直观的一种矩阵表达方式,因为Perl不直接支持二维数组:
zjzc01:/root/perl# cat a14.pl
@matrix = ([1,2,3],[4,5,6],[7,8,9]);
print "$matrix[1][2] is $matrix[1][2]
";
zjzc01:/root/perl# perl a14.pl
$matrix[1][2] is 6
注意这里@matrix 是一个简单的数组,它的元素为指向匿名数组的引用。也就是说,$matrix[1][2] 是$matrix[1]->[2]的简化表
达形式:
例2-1 中描述了从文件中读取数据并创建数组的数组结构,
散列表的散列表:
如果矩阵大而稀疏(只有一小部分的元素值不为零)的话,那么使用散列表的散列表或许是一种空间利用率更高的表达方式。
例如矩阵:
0 0 100
200 0 0
0 300 0
$matrix{0}{2}=100;
$matrix{1}{0}=200;
$matrix{2}{1}=100;
[root@dr-mysql01 ~]# cat t1.pl
@matrix=([1,2,3],[4,5,6],[7,8,9]);
print $matrix[2][0];
print "
";
print $matrix[2]->[0];
print "
";
print $matrix[1][1];
[root@dr-mysql01 ~]# perl t1.pl
7
7
5[root@dr-mysql01 ~]#
jrhxpt01:/root# cat 1.pl
$ref_to_AoA = [
[ "fred", "barney", "pebbles", "bambam", "dino", ],
[ "homer", "bart", "marge", "maggie", ],
[ "george", "jane", "elroy", "judy", ],
];
print $ref_to_AoA[2][2];
print "
";
print $ref_to_AoA->[2][2];
print "
";
print $ref_to_AoA->[2]->[2];
print "
";
jrhxpt01:/root# perl 1.pl
elroy
elroy
数组访问和HASH 访问:
zjzc01:/root/perl# cat t2.pl
@array=(1,3,5,7,9);
print "$array[0] is $array[0]
";
print "$array[1] is $array[1]
";
zjzc01:/root/perl# perl t2.pl
$array[0] is 1
$array[1] is 3
zjzc01:/root/perl# cat t3.pl
%hash=(a=>1,b=>2,c=>3);
print $hash{a};
print "
";
zjzc01:/root/perl# perl t3.pl
1
格式化打印工具:
zjzc01:/root/perl# cat t4.pl
@sample=(11.233,{3=>4,"hello"=>[6,7]});
require 'dumpvar.pl';
dumpValue(@sample); ###必须以引用方式传递
zjzc01:/root/perl# perl t4.pl
0 11.233
1 HASH(0x14122c0)
3 => 4
'hello' => ARRAY(0x13f5d48)
0 6
1 7