#runme.pl use lib '.'; use ExampleClass; my $ec = ExampleClass->new; print $ec->does_work,"\n"; #### #ExampleClass.pm package ExampleClass; use lib '.'; use BarWrapper; use FooWrapper qw/can_i_see_you/; sub new { my $class = shift; bless {}, $class; } sub does_work { can_i_see_you(); } 1; #### #BarWrapper.pm package BarWrapper; use vars qw/@ISA @EXPORT_OK @SUBS/; require Exporter; @ISA = qw(Exporter); @EXPORT_OK = qw(i_am_another_sub); require "bar.pl"; require "foo.pl"; 1; #### #bar.pl sub i_am_another_sub { return "subber!"; } 1; #### #FooWrapper.pm package FooWrapper; use vars qw/@ISA @EXPORT_OK @SUBS/; require Exporter; @ISA = qw(Exporter); @EXPORT_OK = qw(can_i_see_you dont_import_me ); require "foo.pl"; 1; #### #foo.pl sub can_i_see_you { return "You can see me!"; } sub dont_import_me { return "Don't import me"; } 1;