Me gustaría saber cómo deshacer la definición del valor de una clave hash en Perl. ¿Podría alguien corregir mi código?
#!/usr/bin/perl
use strict;
use warnings;
my %hash;
undef($hash{"a"});
undef($hash{"b"});
print scalar values %hash; # i need here 0
print scalar keys %hash; # and here 2
Respuestas
4 para la respuesta № 1El punto de la otra respuesta sobre la definición frente a la existencia es muy bueno, pero si realmente hacer ¿Quieres saber el número de valores definidos que siempre puedes hacer?
print scalar grep { defined $_ } values %hash
8 para la respuesta № 2
undef($hash{"a"});
es equivalente a
$hash{"a"}=undef;
Entonces se agrega clave "a" con valor undef. Para eliminar el valor del hash use "delete".
delete $hash{"a"};
No es posible tener diferentes tamaños de "claves" y "valores" para el mismo hash. Puedes usar grep para filtrar elementos no deseados.
2 para la respuesta № 3
undef $hash{$key};
Esto anulará el valor de esta clave:
print "E" if exists $hash{$key}; # will print E
print "D" if defined $hash{$key}; # will not print D