my @sorted = sort { $a->{id} <=> $b->{id} || $a->{foo} cmp $b->{foo} } @unsorted; # SLOW my @sorted = map { $_->[1] } sort { $a->[0] cmp $b->[0] } map { pack "l>A*", $_->{id}, $_->{foo} } @unsorted; # FAST