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.