use threads qw(stringify); use threads::shared; my %contacts : shared; #### $contacts{$contact} = &share( {} ); share( $contacts{$contact}{'a'} ); share( $contacts{$contact}{'inc_dnd'} ); share( $contacts{$contact}{'lock'} ); $contacts{$contact}{'a'} = 1; $contacts{$contact}{'inc_dnd'} = &share( {} ); $contacts{$contact}{'lock'} = 0; #### DB<2> print Dumper $contacts{$user_id} $VAR1 = { 'inc_dnd' => {}, 'a' => '1', 'lock' => '0', 'd' => '/tmp' }; #### 170: lock( $contacts{$user_id} ); DB<2> print is_shared($contacts{$user_id}) 226839368 DB<3> n lock can only be used on shared values at get_contacts_pool_photos.pl line 170. at get_contacts_pool_photos.pl line 170 main::get_contacts_pool_photos() called at get_contacts_pool_photos.pl line 93