in reply to Re: adding to a hash
in thread adding to a hash

That little ||= keeps a value in the hash if it is there or assigns a new key/value pair if it is not defined yet.

Oops. You have to be a little more careful than that. Your code will perform the assignment even in the case that a previous false value exists. For example:

$h{key} = 0; $h{key} ||= "foo"; print $h{key};

If you really want to check for definedness, you should use defined(). Often, though, there are situations where undef is a valid value too and in those cases you should use exists() to check whether the hash key exists yet. Here is one way to do that succinctly:

$h{$key} = "value" unless exists $h{$key};

-sauoq
"My two cents aren't worth a dime.";