DelphiFAQ Home Search:

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

 

commentsThis article has not been rated yet. After reading, feel free to leave comments and rate it.

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 = ();

Comments:

 

 

Email address (not necessary):

Rate as
Hide my email when showing my comment.
Please notify me once a day about new comments on this topic.
Please provide a valid email address if you select this option.
 
It seems that you are
from Washington, US .

Info/ Feedback on this

Show city and country
Show country only
Hide my location
Leave your comment here:
Please type in the code:
photo Add a picture:

Please do not post inappropriate pictures. Inappropriate pictures include pictures of minors and nudity. The owner of this web site reserves the right to delete such material.