package C1; use Moose; sub html { my $this = shift; return '' . '' . inner() . '' . ''; } package C2; use Moose; extends 'C1'; augment html => sub { return 'C2'; }; #### warn C2->new->html; # yields # C2 #### package C1; use Moose; sub html { my $this = shift; return '' . $this->head . '' . inner() . '' . ''; } sub head { return '' . (inner() || '') . ''; } package C2; use Moose; extends 'C1'; augment html => sub { return 'C2'; }; #### warn C2->new->html; # yields # C2C2