I would like to completely reset my %hash so that it does not contain keys or values at all. I prefer to use a one-liner than have to use a loop.
So far I have tried:
%hash = 0;
%hash = undef;
But these both throw errors in strict mode with warnings enabled, so I wrote a simple for loop to achieve the same thing:
for (keys %hash) {
delete $hash{$_};
}
This works but I would really like to do this with a one-liner. Is there a way to simply reset a hash that I am overlooking?
Both
%hash = ();andundef %hash;will work, with the difference that the latter will give back some memory to use for other things. The former will keep the memory the things in the hash used before, assuming it’ll be used again later anyway, when the hash is being refilled.You can use
Devel::Peekto observe that behaviour:The
MAXfields in thePVHVs are the important bit.