#!/usr/bin/perl -w package P; sub foo { print __PACKAGE__, "\n"; } package P1; @ISA=qw(P); sub foo { my $self=shift @_; print __PACKAGE__, "\n"; $self->SUPER::foo(); } package P2; @ISA=qw(P); sub foo { my $self=shift @_; print __PACKAGE__, "\n"; $self->SUPER::foo(); } package P3; @ISA=qw(P1 P2); sub foo { my $self=shift @_; print __PACKAGE__, "\n"; $self->SUPER::foo(); } package main; bless({}, P3)->foo();