in reply to Re^3: Not geting Shared variable of parent process into the thread
in thread Not geting Shared variable of parent process into the thread

first of all variables that will be shared between threads needs to be shared so hash transaction_hash needs to be declared as well as shared. Second you need to pass the %transaction hash as a reference into %hsh with the \ prefix. Look at the following code

#!/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"; } }
  • Comment on Re^4: Not geting Shared variable of parent process into the thread
  • Download Code