A simpler method is to just leave off the package line in your Include module. The module automatically starts in the package of the caller, and thus the chain-included modules will automatically export to the correct place.
# test.pl
use warnings;
use strict;
package foo;
use Include;
funcA();
funcB();
funcC();
# Include.pm
use myA;
use myB;
use myC;
1;
package myA;
use base 'Exporter';
our @EXPORT = qw(funcA);
sub funcA {
warn "funcA";
}
1;
package myB;
use base 'Exporter';
our @EXPORT = qw(funcB);
sub funcB {
warn "funcB";
}
1;
package myC;
use base 'Exporter';
our @EXPORT = qw(funcC);
sub funcC {
warn "funcC";
}
1;
Output:
funcA at myA.pm line 7.
funcB at myB.pm line 7.
funcC at myC.pm line 7.