use Module LIST; #### require Module; Module->import LIST if Module->can('import'); #### test1.pl:2 use strict; test1.pl:4 use lib qq{/usr/web/wonko/test/lib/SYS}; test1.pl:5 use lib qq{/usr/web/wonko/test/lib/AB}; test1.pl:7 require SYS_mail; Start executing SYS_mail.pm SYS_mail.pm:1 package SYS_mail; SYS_mail.pm:3 use lib qq{/usr/web/wonko/test/lib/AB}; SYS_mail.pm:5 require AB_prod; Start executing AB_prod.pm AB_prod.pm:1 package AB_prod; AB_prod.pm:3 use lib qq{/usr/web/wonko/test/lib/SYS}; AB_prod.pm:5 require SYS_mail; Does nothing. Already required AB_prod.pm:5 SYS_mail->import(qw ( send_mail )) if SYS_mail->can('import'); ERROR!! #### use vars qw(@ISA @EXPORT_OK); use Exporter(); @ISA = qw(Exporter); @EXPORT_OK = qw( send_notice ); #### /usr/web/wonko/test/AB/AB_prod.pm #-------------------------------------------------------------------- package AB_prod; use lib qq{/usr/web/wonko/test/lib/SYS}; use strict; use warnings; BEGIN { our @ISA = qw( Exporter ); our @EXPORT_OK = qw( send_notice ); require Exporter; } use SYS_mail qw ( send_mail ); sub send_notice { print qq{Hello from AB_prod::send_notice\n}; send_mail(); } 1; #-------------------------------------------------------------------- #### /usr/web/wonko/test/lib/SYS/SYS_mail.pm #-------------------------------------------------------------------- package SYS_mail; use lib qq{/usr/web/wonko/test/lib/AB}; use strict; use warnings; BEGIN { our @ISA = qw( Exporter ); our @EXPORT_OK = qw( send_mail ); require Exporter; } use AB_prod qw( send_notice ); sub send_mail { print qq{Hello from SYS_mail::send_mail\n}; } 1; #-------------------------------------------------------------------- #### use strict; use warnings; use SYS_mail qw( send_mail ); use AB_prod qw( send_notice ); send_notice(); __END__ output ====== Hello from AB_prod::send_notice Hello from SYS_mail::send_mail