??????????????????????????由于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,$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;
?
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,$data3,$data4)=@{$var};
print "list by sub: $data1,$data4";
print "n";
}
?
以上代码已经验证过可行性。