perl 多维数组创建问题

本文探讨了Perl中动态创建多维数组的方法,指出了一种常见错误,并通过示例解释了为何直接赋值给数组长度会导致问题。在代码示例中,`somefunc`生成了一个长度为10的数组,但错误地将数组长度赋给了`AoA`的元素,而不是数组引用。正确的做法是使用引用将数组本身存储在`AoA`中。
摘要由CSDN通过智能技术生成

今天看了Perl教程“数据结构”部分多维数组的动态创建。数组实际上是一维的,因此所谓数组实际上是一维引用数组,及数组元素是一个数组的引用。依此延伸,便可创建多维数组。介绍了动态多维数组创建有三种可行方案,并给出了示例。

  1. @array=somefunc($j); $AoA[$j]=[@array];  #最安全
  2. @array=somefunc($j); @{$AoA[$j]}=@array;    #有点危险
  3. my @array=somefunc($j); $AoA[$j]=/@array;    #快速但危险,取决于数组的自有性

下面代码是教程中给出的例子,与方案一相似却不正确。@AoA不是二维数组,而是一维数组,元素内容为数组@array的长度。

for ($j=1;$j<=3;$j++) {
  @array = &somefunc($j);  
  $AoA[$j] = @array;       
}

我补全了脚本代码,somefunc()用于生成一个长度为10 的数组。一个可执行的perl脚本test.pl

my @AoA;
my ($i,$j);
for ($j=1;$j<=3;$j++) {
 print("主函数传参【$j】/n");
  @array = &somefunc($j);<

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值