foreach $batch ( keys %{$hash{$host}} ) { my @runs= keys %{$hash{$host}{$batch}; @runs= sort { $hash{$host}{$batch}{$a}{start} <=> $hash{$host}{$batch}{$b}{start} } @runs; foreach $run (@runs) { ...