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


in reply to The Drivel is in the Details

Why is the -> necessary in $source->{$node}

Because $source is a (hash) reference and it needs to be dereferenced.

and why the %$ and @$ symbols instead of just % and @?

Because the symbols are still simply % and @, but now you're using them to dereference something that is held in a scalar, which is prefixed by the $ sigil: this is another method for dereferencing, and in its full blown form it should be:

%{ $hashref }

But in this simple case the curlies can be omitted. In more complex contructs, they cannot.