package base::Vars; # Actually a bunch of others vars in here, but I'm simplifying. use vars qw( %runSwitches ); our @ISA = qw(Exporter); our @EXPORT = qw(%runSwitches); #### package main; use base::Vars qw(%runSwitches); use vars qw(%runSwitches); my $hostname = `hostname`; chop($hostname); if($hostname eq 'ISL06){ $runSwitches{directories} = {stat_out => '/net/httpd/htdocs/projects/reconciler', DRMetrics => '/net/DRMetrics' ...} elsif{ ....}{} #### package safer::Indenture::facetsIn; use strict; use base::Vars qw(%runSwitches); use Carp; sub orionDirs{ print("safer::Indenture::facetsIn's directories: " , join(' ', sort keys %{$runSwitches{directories}}), "\n"); print("base::Vars::runSwitches' directories: ", join(' ', sort keys %{$base::Vars::runSwitches{directories}}), "\n"); print("main::runSwitches{directories}'s directories: " , join(' ', sort keys %{$main::runSwitches{directories}}), "\n"); croak unless $runSwitches{directories}{orion_reqs} ...} #### package main; use strict; use base::whereami; use safer::Indenture::facetsIn qw(orionDirs); &orionDirs(); 1 #### perl -w test/ipack safer::Indenture::facetsIn::runSwitches's directories: base::Vars::runSwitches' directories: main::runSwitches's directories: DRMetrics base external_cgi_bin external_images external_ont external_rec knowledge ontology orion_reqs stat_out ucfDir #### perl -dw test/ipack.pl Loading DB routines from perl5db.pl version 1.33 Editor support available. Enter h or `h h' for help, or `man perldebug' for more help. main::(test/ipack.pl:6): &orionDirs(); DB<1> c safer::Indenture::facetsIn's directories: DRMetrics base external_cgi_bin external_images external_ont external_rec knowledge ontology orion_reqs stat_out ucfDir base::Vars::runSwitches' directories: DRMetrics base external_cgi_bin external_images external_ont external_rec knowledge ontology orion_reqs stat_out ucfDir main::runSwitches's directories: DRMetrics base external_cgi_bin external_images external_ont external_rec knowledge ontology orion_reqs stat_out ucfDir