#declare hash in main my %myhash; #require the autoloaded modules: require ${modulename}; require ${usermodule}; #build the hash in an autoloaded module using a reference: &{${modulename}.'::$modulename'}($param1,\%myhash,\%hash2); #call another autoloaded module that wants to use the hash: &{${usermodule}.'::$usermodule'}($param1,\%myhash,\$array); #in $usermodule, keys to the hash exist: @mykeys = keys %$hashref; # is non-empty array #but any attempt to get hash values produces null. e.g., my $myval = ${hashref}->{$mykeys[0]};