我创建了一个2d(mxn)数组@ ary_2d,用于从不同文件中读取不同的值。因此,m和n值不断变化。确定标量非常困难,因为每个文件都有不同的数据集,特别是对于不同的m值。如何以简单的方式确定m和n?对于1d数组,让我们说@ ary_1d,我可以使用$#ary_1d来决定它。如何以类似的方式确定m和n值?任何建议或更简单的方式将受到高度赞赏。 我们来看下面的例子。
my @ary_2d=([12,13,14,15],[67,68,69,70,71]);
#row 1:[12,13,14,15],包含4个元素/列;第2行:[67,68,69,70,71],包含5个元素/列
$#ary_id
获得这个数组的大小。但是,当我们处理2个或更高维数组时,我们如何获得m值(行值)?任何简单明了的命令都将受到高度赞赏。
最佳, 利昂
答案 0 :(得分:1)
$#array
为您提供最后一个元素的索引,大小实际上是$#array + 1
或scalar @array
(或标量上下文中的@array
)。要获得嵌套数组的大小,请使用dereference:
#!/usr/bin/perl
use warnings;
use strict;
use feature qw{ say };
my @ary_2d=([12,13,14,15],[67,68,69,70,71]);
my $size = @ary_2d;
print "m: $size\n";
print "n: ", scalar @$_, "\n" for @ary_2d;
答案 1 :(得分:1)
use List::Util qw( max );
my @ary_2d=([12,13,14,15],[67,68,69,70,71]);
printf "%dx%d\n", 0+@ary_2d, max map 0+@$_, @ary_2d;