foreach my $item (sort { scalar keys (%{$reg{$b}})<=>scalar keys (%{$reg{$a}}) || $b<=>$a } keys %reg){ foreach my $case (sort {$a<=>$b || $reg{$item}{$a} <=> $reg{$item}{$b}} keys %{$reg{$item}}){ print "$c = $item:$case\n"; $c++; } } __OUTPUT__ 1 = 282:37 2 = 282:38 3 = 282:39 4 = 212:41 5 = 212:42 6 = 212:49