use strict; use threads; use threads::shared; my %thash : shared; ## Share the base hash my $temp = {}; ## Get a reference to an anon. hash in a temp var share( $temp ); ## share() the temp var $thash{A} = $temp; ## assign it into the structure $thash{A}{1} = 'b'; ## At this point you have what you asked for.