use strict; package Foo; sub new{return bless {}, 'Foo';} sub mysub{ say "invoked foo->mysub"; } package main; sub mysub{ say "invoked mysub";} my $foo = Foo->new(); $foo->mysub % 2; $foo->mysub %2; mysub % 2; mysub %2; #### package Foo; sub new { use strict; return bless({}, 'Foo'); } sub mysub { use strict; print "invoked foo->mysub\n"; } package main; sub mysub { use strict; print "invoked mysub\n"; } use strict; my $foo = 'Foo'->new; $foo->mysub % 2; $foo->mysub % 2; mysub %2; mysub %2;