# MyTools.pm package MyTools; use warnings; use strict; sub import { my ($importing_package, $string_for_export, ) = @_; $string_for_export = '[default]' if ! defined $string_for_export; { no strict 'refs'; # turn off in narrowest scope # use a symbolic reference (gasp) ${ $importing_package . '::var' } = $string_for_export; } } 1; #### # MyChest.pm package MyChest; use warnings; use strict; use parent qw(MyTools); 1; #### # MyBag.pm package MyBag; use warnings; use strict; use parent qw(MyTools); 1; #### # MyBox.pm package MyBox; use warnings; use strict; use parent qw(MyTools); 1; #### use warnings; use strict; use MyChest 'Swiss Army knife'; use MyBox '6-bladed screwdriver'; use MyBag; # no string specified print 'all variables printed from ', __PACKAGE__, ": \n"; print " var in MyChest: '$MyChest::var' \n"; print " var in MyBox: '$MyBox::var' \n"; print " var in MyBag: '$MyBag::var' \n"; #### c:\@Work\Perl\monks\TerryBerry>perl set_in_importing_script_2.pl all variables printed from main: var in MyChest: 'Swiss Army knife' var in MyBox: '6-bladed screwdriver' var in MyBag: '[default]'