2014-06-08 33 views
0

我可以通过将其分配到一个标量得到一个数组的元素计数:获取多个阵列的总元素计数

my $size = @array1; 

我怎么能拿5个阵列的总规模在同一时间?

my $size = @array1,@array2,@array3,@array4,@array5; 
+0

是你想在这里实现什么行为? – Kaoru

回答

2

如果你想数组长度的总和,

my $size = @array1 + @array2 + @array3 + @array4 + @array5; 

或效率低的替代品,

# in scalar context map returns number of elements 
my $size = map 1, @array1,@array2,@array3,@array4,@array5; 

# make new array and dereference it (in scalar context) 
my $size = @{[ @array1,@array2,@array3,@array4,@array5 ]}; 
+0

非常感谢你 – user3717017

1

你试过了吗?结果是什么?请注意,您的选项1相当于

my $size = @array5; 

当您每次创建一个新变量时。

我假设你想要所有阵列的大小在一起。

数组返回它们在标量上下文中的大小。列表不,它们返回它们的最后一个元素。

因此,

my $size = (@array1, @array2); 

返回@数组2的大小。 (没有括号,它返回@ array1的大小)。

您可以使用

my $size = @array1 + @array2; 

+运算力标量上下文。

如果你想要,而不是大小的数组,使用

my @sizes = map scalar @$_, \@array1, \@array2; 
+0

感谢您的回复... – user3717017