$ perl -MMyClass -le 'print SubClass::->new()->get_subclass_object()' MyClass already has a metaclass, but it does not inherit Moose::Meta::Class (Class::MOP::Class=HASH(0x7f918c72e440)). at /Users/ken/perl5/perlbrew/perls/perl-5.22.0t/lib/site_perl/5.22.0/darwin-thread-multi-2level/Moose/Exporter.pm line 484 Moose::import('Moose') called at MyClass.pm line 3 MyClass::BEGIN at MyClass.pm line 3 eval {...} at MyClass.pm line 3 require MyClass.pm at -e line 0 main::BEGIN at MyClass.pm line 3 eval {...} at MyClass.pm line 3 BEGIN failed--compilation aborted at MyClass.pm line 3. Compilation failed in require. BEGIN failed--compilation aborted. #### package MyClass; use Moose; use SubClass; #### $ perl -MMyClass -le 'print SubClass::->new()->get_subclass_object()' SubClass=HASH(0x7fc4f2bb4148) #### $ perl -MSubClass -le 'print SubClass::->new()->get_subclass_object()' SubClass=HASH(0x7fb6698259a8) #### sub get_subclass_object { my $class = ref $_[0]; return $class->new; } #### package OtherSubClass; use Moose; extends 'MyClass'; 1; #### $ perl -MSubClass -le 'print SubClass::->new()->get_subclass_object()' SubClass=HASH(0x7fae2280f258) #### $ perl -MOtherSubClass -le 'print OtherSubClass::->new()->get_subclass_object()' OtherSubClass=HASH(0x7fa721030da8)