配列のサイズを出力するにはさまざまな方法があります。すべての意味は次のとおりです。配列がmy @arr = (3,4);
方法1:スカラー
これは、配列のサイズを取得する正しい方法です。
print scalar @arr; # prints size, here 2
方法2:インデックス番号
$#arr
配列の最後のインデックスを与えます。したがって、配列のサイズが10の場合、最後のインデックスは9になります。
print $#arr; # prints 1, as last index is 1
print $#arr + 1; # Add 1 to last index to get array size
ここでは、配列を0インデックスと見なして1を追加しています。しかし、それがゼロベースでない場合、このロジックは失敗します。
perl -le 'local $[ = 4; my @arr=(3,4); print $#arr + 1;' # prints 6
上記の例では、初期インデックスを4に設定しているため、6が出力されます。インデックスは5と6になり、要素はそれぞれ3と4になります。
方法3:
配列がスカラーコンテキストで使用される場合、配列のサイズを返します
my $size = @arr;
print $size; # prints size, here 2
実際、方法3と方法1は同じです。
print 0+@arr
、print "".@arr
、print ~~@arr