foreach $key_1 (keys %hash_1) { foreach $key_2 (keys %hash_2) { $my_hash{$key_1}{$key_2} = something; } } ........ $vars = { my_hash= > \%my_hash } #### [% FOREACH key_1 IN my_hash.keys.sort.reverse %] [% FOREACH key_2 IN my_hash.$key_1.keys.sort.reverse %] output something [%END%] [%END%] #### [% FOREACH key_1 IN my_hash.keys.sort %] [% FOREACH key_2 IN my_hash.$key_1.keys.sort %] output something [%END%] [%END%] #### [% IF sort_order == 1 %] [% FOREACH key_1 IN my_hash.keys.sort %] [% FOREACH key_2 IN my_hash.$key_1.keys.sort %] output something [%END%] [%END%] [% ELSE %] [% FOREACH key_1 IN my_hash.keys.sort.reverse %] [% FOREACH key_2 IN my_hash.$key_1.keys.sort.reverse %] output something [%END%] [%END%] [%END%] #### [% FOREACH key_1 IN my_hash.keys.variable_sort_order %] [% FOREACH key_2 IN my_hash.$key_1.keys.variable_sort_order %] output something [%END%] [%END%]