package Foo::A; use 5.008; use strict; use warnings; require Exporter; #use AutoLoader qw(AUTOLOAD); use Carp; use Foo::B ':all'; our @ISA = qw(Exporter); @EXPORT or @EXPORT_OK our %EXPORT_TAGS = ( 'all' => [ qw( aMethod ... ) ] ); our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } ); our @EXPORT = qw(); our $VERSION = '1.00'; ... sub aMethod { bMethod("$OURVAR test data"); } ... 1; __END__ ############################################3 package Foo:B; use 5.008; use strict; use warnings; require Exporter; #use AutoLoader qw(AUTOLOAD); our @ISA = qw(Exporter); our %EXPORT_TAGS = ( 'all' => [ qw( bMethod $OURVAR ) ] ); our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } ); our @EXPORT = qw(); our $VERSION = '1.00'; # something like this sub bMethod { my $foo = shift; print "$foo\n"; } ... 1; __END__