http://www.perlmonks.org?node_id=1011297


in reply to Re^2: Shared hash within shared hash of hash???
in thread Shared hash within shared hash of hash???

1. Do i need to use lock $hash{foo} ; or lock ( \%hash ) ; if foo is used as shared_clone ?

It depends upon what you intend to modify.

When you have nested hashes so:

%hash :shared = &share( {} );
  1. To add a new key/value pair; or delete a key/value pair; or modify the value associated with an existing key in %hash you need:
    lock %hash; $hash{ existingkey } = newvalue; # or $hash{ newkey } = newvalue; #or delete $hash{ existingkey };
  2. To modify the nested anonymous hash associated with the key 'foo', you need:
    lock %{ $hash{ foo } }; $hash{foo}{somekey} = somevalue; # or delete $hash{ foo }{ somekey };

    Ie. lock %{ $h{1} } says lock the hash referenced by the value at $h{1}.


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.