package A; use lib '.'; use strict; use warnings; use B qw(moo); use C; use Exporter; our @ISA = qw(C); A-> new; moo; 1; #### package B; use strict; use warnings; use Exporter; use vars qw(@ISA @EXPORT_OK); @ISA = qw(Exporter); @EXPORT_OK = qw(moo); sub moo { print "B::moo\n" } 1; #### package C; use strict; use warnings; sub new { bless({}, shift)-> moo }; sub moo { print "C::moo\n"; } 1;