Как найти количество ключей в хеше, например, используя $#
для массивов?
Как найти количество ключей в хеше в Perl?
Ответ 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;