Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

Answer: How do I empty out a hash?

( #296498=categorized answer: print w/ replies, xml ) Need Help??

Q&A > hashes > How do I empty out a hash? contributed by arno


To delete a key, you don't need to know her value.
Here's my code :

my %hash = ( Carol => 22, Mary => 21, Chris => 30 ); map { delete $hash{$_} } keys %hash;
Update: Of course this makes use of map in void context. Yick. And a couple other suggestions came in by way of followup:

  • delete @hash{(keys %hash)}; # Hash slice
  • %hash = (); # Most efficient method.


Comment on Answer: How do I empty out a hash?
Select or Download Code
Re: Answer: How do I empty out a hash?
by Aristotle (Chancellor) on Oct 04, 2003 at 16:10 UTC
    Easier yet.
    delete @hash{(keys %hash)};
    Update: this is, of course, only useful when you want to use delete the keys from one hash in another one, as in
    delete @foo{(keys %bar)};
    Otherwise, only the below solution makes any sense.

    Makeshifts last the longest.

      Even more easier!

      %hash = ();

      And twice more quicker also.

Log In?

What's my password?
Create A New User
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (7)
As of 2015-04-01 10:53 GMT
Find Nodes?
    Voting Booth?

    Who makes your decisions?

    Results (11 votes), past polls