in reply to sub classing best practice

It sounds like you want to be able to create Class::SubClass both from raw args or as a clone of an existing Class instance.

Two things come to mind. You could either add a method to Class to extract the original args:

my $obj = Class->new(...your args...); my $subobj = Class::SubClass->new($obj->original_args);
Or add a method to SubClass which extracts the needed args from an instance of obj, so you could have:
my $obj = Class->new(...your args...); my $subobj = Class::SubClass->clone_from_parent($obj); package Class::SubClass; ... sub clone_from_parent { my $class = shift; my $obj = shift; my %args; ...set up %args by calling methods on $obj to get info... return __PACKAGE__->new(\%args); }
It also might be the case that if we knew more about your situation we could recommend better solutions.