in reply to Given a tie object, get a tied hash (or scalar, or whatever)

Hmm. I don't see how this would work for Tie::Persistent, the tie package I'm most familiar with, and I'm sure other tie packages would have similar problems. In Tie::Persistent, the variable is dumped (on destruction and as requested) to a file (specified when tied) - your new variable would compete for access to the file and one would clobber the other. Maybe if you did it like this:
my %newhash = Foo($obj, @newargs);
But that would probably be equivalent to just tie-ing the new hash with the new args and recursively copying the old hash to the new one.
Update:
Actually, the recursive copying is problematic as well because it may have side effects...