use Sort::Key::Multi 'is_keysort'; # 'is' stands for an integer and a string keys my @sorted = is_keysort { ($products{Cat}{Pro}{$_}{Qua} ? 0 : 1), $_ } keys %{$products{'Cat'}{'Pro'}};