DelphiFAQ Home Search:
General :: Programming :: perl
General questions about perl.

Articles:

This list is sorted by recent document popularity (not total page views).
New documents will first appear at the bottom.
Recommended links on this topic:
Featured Article

How to delete entries from a hash (associative array) in perl

Question:

I need to remove some elements of my hash in perl. Using undef seems not to work.
How do I do it other than copying every valid element into a target hash?

Answer:

Indeed undef will not work.

See the snippets below for a solution of your problem. It involves delete

my %months = (
   'Jan' => 31,
   'Feb' => 28,
   'Mar' => 31);
 
 # this kills the whole hash
 undef %months;
 
 # this does NOT work
 undef $months{'Feb'};
 
 # this does not work either
 $months{'Feb'} = undef;
 
 # this deletes entry 'Feb':
 delete $months{'Feb'};
 
 # this is equivalent to deleting the whole hash:
 foreach $key (keys %months) {
   delete $months{$key};
 }
 
 # this will also delete all keys:
 delete @months{keys %months}
 
 # another way to empty the hash
 %months = ();
 

Generated 0:01:53 on Nov 24, 2017