my %h => ( X => { num => 1, txt => 'X' }, Y => { num => 2, txt => 'Y' }, Z => { num => 3, txt => 'Z' }, ); my $thr = threads->new(\&thr_func, \%h); ...LOOP-MAIN #using the hash on in readonly mode (eg print all values from hash) ...END LOOP-MAIN sub thr_func { my ($h_ref) = @_; ...LOOP-THR #using the hash on in readonly mode (eg print all values from hash) ...END LOOP-THR }