I would like to know the difference between "%$foo{'bar'}" and "$foo->{'bar'}". To be more specific, I would like to know why and in what instance each form can be used correctly. I have a theory why, but I would like confirmation.
My theory is that the first method needs to have $foo contain the scalar that is that name of a hash that needs to be referenced because that scalar name is looked up in the variable table...
i.e,:
%my_hash = {}; $hash_ref = 'my_hash'; %$hash_ref{'foo'} = 'bar'; #sets %my_hash{'foo'} = 'bar'
So I think the above would work. The difference between the two scenarios is the type of reference. The arrow operator needs to have a reference that points to memory and a value in the variable table.
Is my logic correct? If not, please correct me, but if I am right, at least one person confirm it so I can move on to some more Perl enlightenment.
Thank you.
the_Don
In reply to Using $foo->{'bar'} and not %$foo{'bar'} by the_Don
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |