package X; require Exporter; our @ISA = qw(Exporter); our @EXPORT = qw(func_in_X); use Y; sub func_in_X { print "func_in_X called.\n"; } 1; --- package Y; require Exporter; our @ISA = qw(Exporter); our @EXPORT = qw(func_in_Y); sub func_in_Y { print "func_in_Y called.\n"; } 1;