my $subobj = $obj->subclass->new(); #### my $subobj = $obj->subclass(); # or, better, my $subobj = $obj->subclass_clone(); #### my $subobj = $obj->clone_into('Class::SubClass'); # ... sub clone_into { my ($self, $subclass) = @_; return $subclass->new(%$self); } #### my $subobj = Class::SubClass->new(%$obj); #### my $subobj = Class::SubClass->clone_from($obj); # ... sub clone_from { my ($package, $base) = @_; return $package->new(%$base); }