my $var :shared; $var = 1; # ok $var = []; # error $var = &share([]); # ok #### my %hash :shared = ( ... ); $DataQueue->enqueue(\%hash); #### # Fixed as per BrowserUK's reply. # Initialization must be done after share. my $href = share({}); %$href = ( ... ); $DataQueue->enqueue($href); #### use Storable qw( freeze thaw ); my %hash = ( ... ); $DataQueue->enqueue(freeze(\%hash));