foreach ( sort gs::long_strings_first @$raw_hash_keys_ar ) { #do_stuff; } package gs; sub long_strings_first($$) { return 0 unless defined $_[0]; return 0 unless defined $_[1]; length $_[1] <=> length $_[0] || lc $_[1] cmp lc $_[0] }