Mi piacerebbe sapere come annullare la definizione del valore per una chiave hash in Perl. Qualcuno potrebbe correggere il mio codice?
#!/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
risposte:
4 per risposta № 1L'altro punto di risposta sulla definizione di esistenza rispetto all'esistenza è molto buono, ma se tu in realtà fare vuoi sapere il numero di valori definiti che puoi sempre fare
print scalar grep { defined $_ } values %hash
8 per risposta № 2
undef($hash{"a"});
è equivalente a
$hash{"a"}=undef;
Quindi aggiungi la chiave "a" con valore undef. Per cancellare il valore dall'hash usa "cancella".
delete $hash{"a"};
Non è possibile avere diverse dimensioni di "chiavi" e "valori" per lo stesso hash. Puoi usare grep per filtrare gli elementi indesiderati.
2 per risposta № 3
undef $hash{$key};
questo annullerà il valore per questa chiave:
print "E" if exists $hash{$key}; # will print E
print "D" if defined $hash{$key}; # will not print D