Существуют различные способы печати размера массива. Вот значения всех: допустим, наш массив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
Мы добавляем 1 здесь, считая массив индексированным 0 . Но если его не на основе нуля, эта логика потерпит неудачу .
perl -le 'local $[ = 4; my @arr=(3,4); print $#arr + 1;' # prints 6
Приведенный выше пример печатает 6, потому что мы установили его начальный индекс на 4. Теперь индекс будет 5 и 6, с элементами 3 и 4 соответственно.
Способ 3:
Когда массив используется в скалярном контексте, он возвращает размер массива
my $size = @arr;
print $size; # prints size, here 2
На самом деле метод 3 и метод 1 одинаковы.
print 0+@arr
,print "".@arr
,print ~~@arr