package X; sub foo; sub bar; package Y; @ISA = 'X'; sub foo; package main; X->foo; # calls X::foo('X'); X->bar; # calls X::bar('X'); Y->foo; # calls Y::foo('Y'); Y->bar; # calls X::bar('Y');