in reply to 2 elements referenced by one Key

Good to see that you're using strict. If you change line 2 to
my %hash = ($values[0] => [$values[1]]);
then the warning will go away. However, you still have a problem because %hash is local to the while() loop. When you get to the foreach loop it will have gone out of scope and you won't get any output. Try this instead:
my %hash; while ($values = fetchrow_array()){ push (@{$hash{$values[0]}}, values[1]); push (@{$hash{$values[0]}}, values[2]); } foreach $value (keys %hash){ print "\$hash: @{$hash{$value}}\n"; }
You may wonder how it's possible to use an undefined value as an array reference. This is a bit of Perl magic called autovivification.