2014-06-08 54 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