# MyClass.pm package MyClass; use BaseClass; # load the base class use SubClass; # load the sub class (which now extends BaseClass) our @ISA = qw(BaseClass); # have all BaseClass methods work on MyClass 1; #### # BaseClass.pm package BaseClass; use Moose; sub get_subclass_object { return SubClass->new; } 1; #### # SubClass.pm package SubClass; use Moose; extends 'BaseClass'; 1;