use Language::MySort; *weird_sort = lang_sort( # place vowels ahead of consonants qw( a e i ), 'a' .. 'j', { # map uppercase characters to lowercase identical => [qw( aA bB cC dD eE fF gG hH iI jJ )], # ignore - and . ignore => "-.", } );