in reply to How to best pass on the context / wantarray?

BrowserUK's response is good, I guess, but I want to offer the following because it uses an interesting but rarely used feature of perl.

sub which_obj { # examine the calling sub's 'wantarray': defined( (caller(1))[5] ) ? $_[0]->copy : $_[0] }
Then you can:
sub foo { . . . my $obj = $self->which_obj; . . . }
We're building the house of the future together.