Actually, i disagree on the point of keeping the arrows in. Since everything after the first level is always a reference, the extra arrows are just line noise. It's just as easy to remember never to put them, rather than always to.
Also, that frees you up to concentrate on the real issue of whether your top level access is by reference or not.
So all the -> rules essentially (for simple to moderate cases) boil down to ref = -> at the top, hash (or list, etc) = no ->
And as a side note to another point you made, I have started following Damian's advice about the deref and have been writing:
%{$hashref}
instead of:
%$hashref
it seems a little more readable, especially with a little whitespace:
%{ $hashref }
-pete
"Worry is like a rocking chair. It gives you something to do, but it doesn't get you anywhere."