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


in reply to passing a multidimentional hash-sub-hash (to a sub and back again)

I think the answer to your question lies in the fact that return(%ALLDATA) returns a list of values (the keys and values of %ALLDATA while  return(\%ALLDATA)returns one value: a scalar that is a reference to the hash.
Hope that helps,
-ase