Подтвердить что ты не робот

Как найти количество ключей в хеше в Perl?

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

4b9b3361

Ответ 1

scalar keys %hash

или просто

keys %hash

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

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

Ответ 2

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

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

 0+(keys %r) 

Ответ 3

Ниже будет указано меньше, чем количество ключей в вашем хеше. Вам может понравиться, если вы любите стиль $#array выполнения вещей (или краткости):

$#{$hash};

КРИТИЧЕСКИЙ РЕДАКТ:

Держись... это интересно. Он работает, если вы хотите использовать его как ссылку на массив, но не если вы используете его снаружи. Поэтому полезно, если вы хотите получить доступ к последнему ключу вашего хеша, при условии, что вы назначили свои ключи в виде массива на temp: Проверьте это:

%hash = ( "barney" => "dinosaur", "elmo" => "monster");
@array = sort {$a cmp $b} keys %hash;
print $array[$#{$hash}];
# prints "elmo"

Ответ 4

Но не после 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

Ответ 5

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

  OR

$X = ключи% hash; print $X;

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

Ответ 6

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

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