Получить длину массива в хэше Perl - PullRequest
6 голосов
/ 20 мая 2010

У меня есть следующее:

$data{host} -> [$i] -> {someotherstuff}

Как я могу получить длину массива, где [$ i] есть?

Ответы [ 3 ]

14 голосов
/ 20 мая 2010
$length = scalar( @{ $data{host} } );
1 голос
/ 21 мая 2010

Ответ добавлен на счет комментария msw :

use autobox::Core;
# ...
$data{host}->length;

Это работает так же, как ответ Cfreak, но с гораздо менее запутанным синтаксисом, за счет использования модуля.

У меня есть тезис, что на большинство законных жалоб на Perl можно просто ответить »Так не должно быть!» и удовлетворен кратким резюме из CPAN.

0 голосов
/ 21 мая 2010

Если вы хотите последний индекс, вы можете использовать: $ # @ {$ data {host}}

Очевидно, что длина массива равна последнему индексу + 1. Используйте это обозначение, когда сложнее достичь скалярного контекста или когда вам конкретно нужна длина-1. Например:

0 .. $ # {$ data {host}} # возвращает список всех индексов массива

Иногда полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...