my %subkeys; # The keys of %subkeys are the subkeys, i.e. GID, AIG, TEA in this case. undef @subkeys{map keys %{ $VAR1->{$_} },keys %$VAR1}; # For each subkey, go through the hash and pick up the corresponding value. for my $subkey (sort keys %subkeys) { print +($subkey, join "\t", q(), map $VAR1->{$_}{$subkey}, sort { $a <=> $b } keys %$VAR1), "\n"; }