package Master::Object; sub new { my $package = shift; my $master = $package->create_a_new_object(@_); return Proxy->new($master); }; ... my $main = Master::Object->new(); # set a new master object: my $new_master = Master::Object->create_a_new_object(); $main->($new_master);