package C; our @ISA = qw/ A /; sub 123 { my $self = shift; # let my superclass do its thing first my $result = $self->SUPER::123(@_); # now I'll do a bit ... } #### sub 123 { my $self = shift; my(@array, $scalar); if (wantarray) { @array = $self->SUPER::123(@_); } elsif (defined wantarray) { $scalar = $self->SUPER::123(@_); } else { $self->SUPER::123(@_); } # do more stuff return wantarray ? @array : $scalar; }