package xx; sub new { bless {}, shift } sub instance { __PACKAGE__->new } sub print { print "XX" } package yy; @ISA = qw/xx/; sub print { print "YY" } package main; my $yy = yy->instance; $yy->print; my $yyy = yy->new; $yyy->print