I program in Perl today. With Hashes. This is for an auxiliary program of my research simulation.

Ususally, we can use the following to check if something exists:

if (defined $a) { ..... };  and if it is a scalar, we can release the memory holded by undefining its content: undef$a;


however, I found that the following won’t work:

undef $hash{'key1'}; @keylist = sort {$hash{$a} <=>$hash{$b} } keys %hash;  the reason for that is keys %hash will still report the existence of key1 but we just undefined its value, but the key is still in the hash. Actually, the way I did that is not what I mean….the correct one is: delete$hash{'key1'};
@keylist = sort { $hash{$a} <=> $hash{$b} } keys %hash;