$ cat pm_1232441.pl use strict; use warnings; sub xyz { print "I'm ::xyz()\n"; } { package FOO; sub xyz { print "I'm FOO::xyz()\n"; } sub abc { print "I'm FOO::abc()\n"; xyz(); } } { package BAR; sub abc { print "I'm BAR::abc()\n"; xyz(); } } xyz(); FOO::xyz(); FOO::abc(); BAR::abc(); Roboticus@Waubli ~ $ perl pm_1232441.pl I'm ::xyz() I'm FOO::xyz() I'm FOO::abc() I'm FOO::xyz() I'm BAR::abc() Undefined subroutine &BAR::xyz called at pm_1232441.pl line 21.