# After this line from snippet 1... my %testHash = ( \@multiKey1 => \@stuff1, \@multiKey2 => \@stuff2, \@multiKey3 => \@stuff3); # ... add this: use Data::Dumper; print Dumper \%testHash; # And run the snippet. __END__ Output: $VAR1 = { 'ARRAY(0x98a9b4)' => [ '6', '7' ], ... ... #### # Change this line from your first snippet... # my %testHash = ( \@multiKey1 => \@stuff1, \@multiKey2 => \@stuff2, \@multiKey3 => \@stuff3); # into this: my %testHash = ( \@multiKey1, \@stuff1, \@multiKey2, \@stuff2, \@multiKey3, \@stuff3); # ... and still use this: use Data::Dumper; print Dumper \%testHash; # And run the code. #### my %testHash = ( \@multiKey1, \@stuff1, \@multiKey2, \@stuff2, \@multiKey3, \@stuff3); @testHashKeys = keys %testHash; @testHashValues = values %testHash; $tmp = @testHashKeys; foreach (@testHashKeys){ print ref($_), ": "; print "deref bla = @$_ = $_\n"; } foreach (@testHashValues){ print ref($_), ": "; print "deref bla = @$_ = $_\n"; } __END__ Output: : deref bla = = ARRAY(0x98a9b4) : deref bla = = ARRAY(0x98a914) : deref bla = = ARRAY(0x98a844) ARRAY: deref bla = 6 7 = ARRAY(0x98aa04) ARRAY: deref bla = 4 5 = ARRAY(0x98a964) ARRAY: deref bla = 1 2 3 = ARRAY(0x3e8d8c)