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