'1' => { 'hostname' => 'somehost@somewhere.com', 'host_info' => { 'info' => 'valueA', 'info2' => 'valueB', 'info3' => 'valueA' }, }, '2' => { 'hostname' => 'someotherhost@somewhere.com', 'host_info' => { 'info' => 'valueA', 'info2' => 'valueB', 'info3' => 'valueA' }, }, } #### my %host_info : shared; my $host_info_REF = \%host_info; my $dbc= DBI-connect("DBI:mysql:database=mydb;IPADDRESS, 'user, 'passowrd"); my $SQL = "SELECT * FROM mydb.HOSTNAMES;"; my $st = dbc->prepare($SQL); $st->execute(); my $row = 0; while (my $tmp = $st->fetchrow_hashref()){ for my $key (keys %$tmp){ $host_info_REF->{$row}->{$key} = $tmp->{$key}; } $row++; } my @threads; my %hostHash; my $hostHashRef = \%hostHash; foreach my $current_host( keys %host_info ){ $hostHashRef->{"curHost"}=$current_host; $hostHashRef->{"href"}=$host_info_REF; push (@threads, threads -> create (\&get_info, $hostHashRef)); } sub get_info[ #Get some info and add to hash }