use Sort::ArbBiLex ( 'fulani_sort', # ask for a &fulani_sort to be defined "a A c C ch Ch CH ch' Ch' CH' e E l L lh Lh LH n N r R s S u U z Z " ); @words = <>; @stuff = fulani_sort(@words); foreach (@stuff) { print "<$_>\n" } #### A, B, D L, N, R, A, E B, C, D, R, B, I, A, ’, C E, A, R, O, I, N, R, A, C #### #/usr/bin/perl -w use strict; my %glyphs; my @words; while ( ) { push @words, split /,\s*/; } @glyphs{ map { /(&.+?;)|(.)/g } @words } = 1; print join( "\n", keys %glyphs); __DATA__ ALBEVERIO MANZONI, Solvejg ALCALÁ, Kathleen ANDRÉE, Alice ARROYO-GOMEZ, Mario Vernon BABINEAU, Jean Joseph BAINBRIDGE, Dame Beryl (Margaret) BAINBRIDGE, Cyril DEARDEN, James Shackley DE’ATH, Richard DECKER, Donna