my ($cnf,$thread) = @_; if ($thread && !$db_connections{$cnf}{$thread}) { my $control = "dbh".$cnf.$thread; # ^^^^^^^^ $$control = DBI->connect( #^^^^^^^^ "dbi:Pg:database=dirotext;host=domain.com", 'user', 'pass' ) or die $DBI::errstr; #### sub dbconn() { my ($cnf,$thread) = @_; #### my %response_hash = (); ... return \%response_hash; ... my %tr_res = %{$running_threads{$name}->join()}; #### my %response_hash; ## No need to initialise lexicals. ... return %response_hash; ## Return a simple list of values ... my %tr_res = $running_threads{$name}->join(); ## Assign the list to a local hash. #### $running_threads{$threadname} = threads->create(\&send_sms_message, $db_ids_in_progress{$id}{'uid'}, $db_ids_in_progress{$id}{'from'}, $db_ids_in_progress{$id}{'to'}, $db_ids_in_progress{$id}{'msg'}, $id, $db_ids_in_progress{$id}{'dlr_track_id'}, $processing); #### ( $running_threads{$threadname} ) = threads->create( \&send_sms_message, $db_ids_in_progress{$id}{'uid'}, $db_ids_in_progress{$id}{'from'}, $db_ids_in_progress{$id}{'to'}, $db_ids_in_progress{$id}{'msg'}, $id, $db_ids_in_progress{$id}{'dlr_track_id'}, $processing );