package ClassA; use Moose; use MooseX::NonMoose; extends 'aNonMooseClass'; has 'param2' => ( isa=>'Str', default=>'Default param2 in class A' ); sub FOREIGNBUILDARGS { my $class = shift; my %args = @_; my $param1 = exists $args{param1} ? $args{param1} : 'Default param1 in class A'; return ( $param1 ); } #### package ClassB; use Moose; extends 'ClassA'; around FOREIGNBUILDARGS => sub { my $orig = shift; my $class = shift; return $class->$orig(param1=>'PARAM1-CLASSB',@_); }; around BUILDARGS => sub { my $orig = shift; my $class = shift; return $class->$orig(param2=>'PARAM2-CLASSB', @_); };