#!/usr/bin/perl use strict; use warnings; my($hash); $hash->{"AAA"}->{"KEY1"} = "VALUE1"; $hash->{"AAA"}->{"KEY2"} = "VALUE2"; $hash->{"AAA"}->{"KEY3"} = "VALUE3"; $hash->{"BBB"}->{"KEY1"} = "VALUEA"; $hash->{"BBB"}->{"KEY2"} = "VALUEB"; $hash->{"BBB"}->{"KEY3"} = "VALUEC"; for my $set (sort {$hash->{$a}->{"KEY2"} cmp $hash->{$b}->{"KEY2"}} (keys %{$hash})){ print "$set:\n"; for my $key (sort(keys %{$hash->{$set}})){ print "\t$key: $hash->{$set}->{$key}\n"; } } #### AAA: KEY1: VALUE1 KEY2: VALUE2 KEY3: VALUE3 BBB: KEY1: VALUEA KEY2: VALUEB KEY3: VALUEC