hashes perl hash

hashes - ¿Cómo puedo encontrar la cantidad de claves en un hash en Perl?



hash of hashes perl (6)

Esto funcionará de manera fácil y para cualquier tamaño de hash.

imprimir claves escalares% hash;

¿Cómo puedo encontrar la cantidad de claves en un hash, como usar $# para matrices?


Lo siguiente devolverá uno menos que la cantidad de claves en su hash. Te puede gustar si te gusta el $#array -style de hacer cosas (o concisión):

$#{$hash};

EDICIÓN CRÍTICA:

Espera ... esto es interesante. Funciona si desea usarlo como una referencia de matriz, pero no si lo usa fuera. Por lo tanto, es útil si desea acceder a la última clave de su hash, siempre que haya asignado sus claves como una matriz a una temperatura: revise esto:

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


Pero no después de Perl 5.10:

use feature ":5.10"; my %p = (); say $#%p; # $# is no longer supported

y peor:

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


imprimir claves escalares% hash;

OR

$ X = claves% hash; imprimir $ X;

(Keys% hash devuelve el valor de las claves en el contexto de la lista que cambia aún más en el contexto escalar (cuando se asigna a la variable escalar).)


podemos usar así también

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


scalar keys %hash

o solo

keys %hash

si ya se encuentra en un contexto escalar, p. ej. my $hash_count = keys %hash o print ''bighash'' if keys %hash > 1000 .

Por cierto, $#array no encuentra la cantidad de elementos, encuentra el último índice. scalar @array encuentra la cantidad de elementos.