由于Perl的二维数组比较难理解,故下面将使用实例来说明二维数组在Perl 中是如何应用的。
#! /usr/bin/perl -w
use warnings;
use strict;
##二维数组的建立,访问,参数传递
my @tmp=&GetArrayData();
##数组作为参数传递给函数
foreach my $rslt(@tmp)
{
##模拟把数组的数据付给列表
my ($data1,$data2,$data3)=@{$rslt};
print " list for : $data1,$data2,$data3";
print "\n";
&printArry(\@{$rslt});
}
print "direct access array values:".$tmp[0][1];
print "\n";
print "direct access array values:".$tmp[0]->[1];
print "\n";
### 添加新列到已经存在的行
push @{$tmp[0]},1,1,1;
foreach my $rslt(@tmp)
{
&printArry(\@{$rslt});
}
####数组的排序,按多列排序:
### 排序:
my @tmp_a=(sort {$a->[0] <=> $b->[0] || $a->[3] cmp $b->[3]} @tmp);
###意思是先按第一个数字的升序来排列,如果相等则按第三个字母升序来排列。
#######################################################################
sub GetArrayData(){
## 函数返回二维数组
my @rslt=();
my @rows=();
my $i=0;
@rows=(1,4,7,'b');
$rslt[$i]=[ @rows];
$i++;
@rows=(2,5,8,'a');
$rslt[$i]=[ @rows];
return @rslt;
}
sub printArry()
{
##模拟二维数组输出
my ($var)=@_;
my ($data1,$data2,$data3,$data4)=@{$var};
print "list by sub: $data1,$data2,$data3,$data4";
print "\n";
}
以上代码已经验证过可行性。