/ / Come si definisce il valore di una chiave hash in Perl? - Perl, hash

Come si definisce il valore di una chiave hash in Perl? - Perl, hash

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 № 1

L'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