Как я могу найти количество ключей в хэше в Perl? - PullRequest
42 голосов
/ 10 июля 2009

Как узнать количество ключей в хэше, например, используя $# для массивов?

Ответы [ 5 ]

72 голосов
/ 10 июля 2009
scalar keys %hash

или просто

keys %hash

если вы уже находитесь в скалярном контексте, например my $hash_count = keys %hash или print 'bighash' if keys %hash > 1000.

Кстати, $#array не находит количество элементов, оно находит последний индекс. scalar @array находит количество элементов.

2 голосов
/ 10 июля 2009

мы тоже можем использовать это

my $keys = keys(%r) ;
print "keys = $keys" ;

 0+(keys %r) 
0 голосов
/ 30 марта 2017
print scalar keys %hash;

или

$X = keys %hash;
print $X;

keys %hash возвращает значение ключей в контексте списка, которое в дальнейшем изменяется в скалярном контексте (при присваивании скалярной переменной).

0 голосов
/ 12 июля 2016

Это будет работать легко и для любого размера хэша.

печать скалярных ключей% хеша;

0 голосов
/ 06 июля 2013

Но не после Perl 5.10:

use feature ":5.10";
my %p = ();
say $#%p;

# $# is no longer supported

и хуже:

use feature ":5.10";
my %p = (a=>1, b=>2, c=>3);
say $#{%p};

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