### External.pm package External; use strict; use base qw(Exporter); use vars qw(@EXPORT); @EXPORT = qw(external); sub external { print "I'm in the external package!\n"; } 1; ### Foo.pm package Foo; use strict; use External; use base qw(Exporter); use vars qw(@EXPORT); push @EXPORT, @External::EXPORT; sub from_base { print "In base...\n"; external(); print "Done in base...\n"; } 1; ### Bar.pm package Bar; use strict; use Foo; use vars qw(@ISA); @ISA = qw(Foo); #use base qw(Foo); my $x = bless { }, 'Bar'; $x->from_base(); external(); 1; ### base-tester #!/usr/bin/perl -w use strict; use Bar; print "Done\n";