#!/usr/bin/perl -w use strict; use warnings; use threads; use threads::shared; use Data::Dumper; my %hsh : shared; my %transaction_hash :shared = ( 'another_k' => 'another_v'); $hsh{inner_hash} = \%transaction_hash; # referencing my $thread = threads->create( \&subrt, %hsh ); $thread->join(); sub subrt { my %args = @_; print Plugin->execute(%hsh); } #Code for Plugin module package Plugin; sub execute { my $class = shift(); my %abc = @_; my %shsh = %{$abc{inner_hash}}; #dereferencing foreach (keys %shsh) { print $_. "---" . $shsh{$_}."\n"; } }