Как я могу найти количество элементов в хеше arrayref? - PullRequest
1 голос
/ 27 октября 2009
$HoA{teletubbies} = [ "tinky winky", "dipsy", "laa-laa", "po" ];

Как узнать количество элементов в этом хеше arrayref (s)? Должен вернуть 4.

Ответы [ 3 ]

12 голосов
/ 27 октября 2009

Технически, это не хэш массивов. Это хэш ссылок на массивы. Поэтому вы должны разыменовать его с помощью оператора @{...} и (необязательно) заставить скалярный контекст преобразовывать массив в его длину.

scalar @{$HoA{teletubbies}}
6 голосов
/ 27 октября 2009

Вы можете получить размер массива в Perl, оценив его в скалярном контексте.

Например, вы можете сделать это явно как:

my $size = scalar @{$HoA{teletubbies}};

Но вы также можете сделать это неявно в этом случае:

my $size = @{$HoA{teletubbies}};

А поскольку это Perl, вы также можете сделать это так:

my $size = $#{$HoA{teletubbies}} + 1;

(Оператор # возвращает последний индекс массива, поэтому добавление к нему даст вам его размер).

0 голосов
/ 28 октября 2009

Если вы хотите сделать весь хэш, просто добавьте к нему немного больше:

my $size= 0 ;
foreach ( values %HoA ) { $size += @$_ }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...