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
);