perl 二维数组的用法实例

Perl中二维数组的应用与操作

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

 

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

 

Perl 中,二维数组实际上是由数组引用组成的数组。向二维数组中添加元素可以分为几种情况:向已有的子数组中添加元素、添加新的子数组(即添加新的行),或者操作数组引用形式的二维数组。以下是几种常见的方法。 ### 向已有的二维数组的子数组中添加元素 可以使用 `push` 函数向二维数组中的某个子数组添加新元素。`push` 接收一个数组引用和要添加的元素,将元素追加到对应的子数组末尾。例如: ```perl my @array_array = (["abc", "ewr"], ["sdfdf", "uu", "wewew"], ["fd"]); # 向第二个子数组添加新元素 push @{$array_array[1]}, "uiop"; print $array_array[1][-1], "\n"; # 输出: uiop ``` ### 添加新的行(子数组) 如果想要向二维数组中添加一个新的子数组(即新行),可以直接使用 `push` 函数,并传入一个新的数组引用: ```perl my @array_array = (["abc", "ewr"], ["sdfdf", "uu", "wewew"], ["fd"]); # 添加新的子数组 push @array_array, ["hjk", "jjkkk"]; print $array_array[3][-1], "\n"; # 输出: jjkkk ``` ### 操作数组引用形式的二维数组 如果二维数组是通过数组引用来表示的(即引用形式的二维数组),可以使用箭头操作符 `->` 来访问或操作数组内部的子数组。例如: ```perl my $ref_array_array = [["abc", "ewr"], ["sdfdf", "uu", "wewew"], ["fd"]]; # 向第二个子数组添加新元素 push @{$ref_array_array->[1]}, "uiop"; # 添加新的子数组 push @$ref_array_array, ["hjk", "jjkkk"]; print $ref_array_array->[1][-1], "\n"; # 输出: uiop print $ref_array_array->[3][-1], "\n"; # 输出: jjkkk ``` ### 初始化一个空的二维数组并动态添加元素 如果从零开始创建一个二维数组,可以先声明一个空数组,然后逐步添加子数组和元素: ```perl my @array_array = (); # 添加第一个子数组 push @array_array, ["a", "b"]; # 向第一个子数组添加新元素 push @{$array_array[0]}, "c"; # 添加第二个子数组 push @array_array, ["d", "e"]; print $array_array[0][-1], "\n"; # 输出: c print $array_array[1][1], "\n"; # 输出: e ``` ### 总结 Perl 中操作二维数组的核心是理解数组引用的概念,并结合 `push` 函数进行动态操作。无论是向已有的子数组中添加元素,还是向整个二维数组中添加新的子数组,都可以通过数组引用来实现[^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值