I'm sure no one using dynamic languages cares, but think about the performance penalty your program is going to be hit with when you start passing hashes to functions.
The interpreter may possibly be smart enough to create a static const hash object and only reference it by pointer, if the code is using a hash with all members that are source code literals.
But if any of those members are variables then the hash must be reconstructed each time it is called.
I've done some Perl optimizations and this kind of thing can become noticeable in inner code loops.
Function parameters perform much better.