I've encountered this same problem before: the fact everything has to be explicitly shared. This becomes a even bigger problem if the data structure is produced by somebody else's code (such as XML::Simple). I've resorted to freez/thaw and share the serialized scalar.