my %fred = ( [1, 2, 3] => [1, 1, 0], [3, 4, 5] => [0, 1, 0], [0, 2, 4] => [1, 2, 1], ); for my $k (keys %fred) { print "$k element 0: '",$k->[0],"'\n"; print "array: (",join(",",@$k),")\n"; } __END__ ARRAY(0x17ba658) element 0: '' array: () ARRAY(0x17b3b80) element 0: '' array: () ARRAY(0x1796998) element 0: '' array: () #### my @ary = ([1, 2, 3],[3, 4, 5],[0, 2, 4]); my %fred = ( $ary[0] => [1, 1, 0], $ary[1] => [0, 1, 0], $ary[2] => [1, 2, 1], ); for my $k (keys %fred) { print "$k element 0: '",$k->[0],"'\n"; print "array: (",join(",",@$k),")\n"; } __END__ ARRAY(0x19cca60) element 0: '' array: () ARRAY(0x19ccb80) element 0: '' array: () ARRAY(0x19af998) element 0: '' array: () #### my @ary = ( [1, 2, 3], [1, 1, 0], [3, 4, 5], [0, 1, 0], [0, 2, 4], [1, 2, 1], ); my (@arystrings, %aryhash); for my $ary ( @ary ) { $aryhash{$ary} = $ary; push @arystrings, scalar $ary; # same string as the key above } my %fred = @arystrings; # treats @arystrings as (key,value,key,value,...) list print_stuff(); %fred = reverse %fred; # reverse hash print_stuff(); sub print_stuff { for my $k (keys %fred) { print "$k element 0: '",$aryhash{$k}->[0],"'\n"; print "array: (",join(",",@{$aryhash{$k}}),")\n"; } } __END__ ARRAY(0x25e6998) element 0: '1' array: (1,2,3) ARRAY(0x2603b80) element 0: '3' array: (3,4,5) ARRAY(0x260f948) element 0: '0' array: (0,2,4) ARRAY(0x260f8d0) element 0: '0' array: (0,1,0) ARRAY(0x260f9c0) element 0: '1' array: (1,2,1) ARRAY(0x2603a60) element 0: '1' array: (1,1,0)