in reply to when to use lists/hash vs references?

I've seen the former more often, but I'm not sure why... to me, the latter makes it more natural to pull out elements since it's references all the why down to the scalars ($r->[0]->[2]->{foo})
Actually, only the first dereferencing arrow is needed for a reference:
# using your @a and $r say $r->[0]->[2]->{foo}; # foo say $r->[0][2]{foo}; # foo say $a[0]->[2]->{foo}; # foo say $a[0][2]{foo}; # foo

So now I think you'll find that the array is the most "natural". As almut said, it's mostly preference.

I think you'll find the perl data structures cookbook a good read.