当前位置: 代码迷 >> 综合 >> perl 二维数组的用法实例
  详细解决方案

perl 二维数组的用法实例

热度:33   发布时间:2023-12-06 14:28:03.0

                          由于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";
}

 

以上代码已经验证过可行性。