e.g. select value[0], value[1], value[1]} from table. I want value[0] to be the key that refers to value[1] or value[2] Here is what I tried while ($values = fetchrow_array()){ my $hash = ($value[0] => $value[1]); push (@{$hash{$values[0]}}, values[2]) } foreach $value (keys %has){ print "$hash: @($hash{$value}\n"; }