web-dev-qa-db-fra.com

Comment trouver le nombre de clés dans un hachage en Perl?

Comment trouver le nombre de clés dans un hachage, par exemple en utilisant $# pour les tableaux? 

42
joe
scalar keys %hash

ou juste

keys %hash

si vous êtes déjà dans un contexte scalaire, par exemple my $hash_count = keys %hash ou print 'bighash' if keys %hash > 1000.

Incidemment, $#array ne trouve pas le nombre d'éléments, il trouve le dernier index. scalar @array trouve le nombre d'éléments.

70
chaos

nous pouvons utiliser comme ça aussi 

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

 0+(keys %r) 
2
joe
print scalar keys %hash;

ou

$X = keys %hash;
print $X;

keys %hash renvoie la valeur des clés dans le contexte de liste qui est ensuite modifiée dans le contexte scalaire (lors de l'affectation à une variable scalaire).

0
Sandeep_black

Mais pas après Perl 5.10:

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

# $# is no longer supported

et pire:

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

# -1
0
user846969