use strict; use warnings; my @array1 = funct_array($par1,$par2,$filename); my %hash1 = funct_hash($par1,$par2,$par3,$filename); # there are more tables/lists like this # then followed process that # takes the pre-generated value from @array1 and %hash1. # Thus both @array1 and %hash1 must be completed first. # Subroutine list sub funct_array { my ($p1,$p2,$fn) = @_; my @array_result; # Run some time consuming process return @array_resutlt; } sub funct_hash{ my ($p1,$p2,$fn) = @_; my %hash_result; # Run some time consuming process return %hash_resutlt; }
As I stated in my snippet above, I couldn't recover back the returned value of array and hash after threading. What's wrong with my code?use strict; use warnings; use threads; use Data::Dumper; my $array1 = threads->new(\&funct_array,($par1,$par2,$filename)); my $hash1 = threads->new(\&funct_hash,($par1,$par2,$par3,$filename)); # Then I tried to see the content of the array # with Data Dumper print Dumper $array->join; print Dumper $hash1->join; # But I couldn't see any value of @array1 and # %hash1 that I can use for the later process # Subroutine list sub funct_array { my ($p1,$p2,$fn) = @_; my @array_result; # Run some time consuming process return @array_resutlt; } sub funct_hash{ my ($p1,$p2,$fn) = @_; my %hash_result; # Run some time consuming process return \%hash_resutlt; }
In reply to Howto capture array/hash back after threaded process by neversaint
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |