in reply to references best practice
I'll second the motion that you should always optimize for clarity. Having said that, I think that the best way to handle a problem like this is through references. Create a nice structure (i.e. a hash) that contains the information you want. Then, store and pass-around references to it.
Each object or value (of any kind) in Perl has a built-in “reference count” which is used by the built-in “garbage collector.” So you can have references to references to references and, as long as you do not create circular references, memory allocation and deallocation will always be reliably and correctly managed. This is also favorable to the interests of the operating system's virtual-memory manager, because you won't be unnecessarily copying things around... an especially important consideration when they are large “things.”