my @key1_order = qw/AB PL B/; ... foreach my $key1 ( @key1_order ) { ... } #### $coord_{AB}{order} = 1; $coord_{PL}{order} = 2; $coord_{B}{order} = 3; ... foreach my $key1 ( sort { $coord_{$a}{order} <=> $coord_{$b}{order} } keys %coord_ ) { ... }