Interpreter efficiency is identical in both cases. What's more interesting to me is programmer efficiency, specifically maintainability. And, there's no easy answer. In a Perl context, I guess it's whether or not your program is more OO (where you would pass the blessed hashref) or more functional (where you would pass the value in order to be less coupled). It's an interesting thought exercise.
My criteria for good software:
- Does it work?
- Can someone else come in, make a change, and be reasonably certain no bugs were introduced?