El módulo Sort::ArbBiLex permite generar subrutinas de ordenación a partir de una especificación de agrupaciones de caracteres equivalentes.
como en el siguiente ejemplo:
lhp@europa:~/Lperl/src/perltesting$ cat -n spanishsort.pl 1 #!/usr/bin/perl -w 2 use strict; 3 use Sort::ArbBiLex ( 4 european_sort => q{ 5 a A à À á Á â Â ã Ã ä Ä å Å æ Æ 6 b B 7 c C ç Ç 8 ch CH cH Ch 9 d D ð Ð 10 e E è È é É ê Ê ë Ë 11 f F 12 g G 13 h H 14 i I ì Ì í Í î Î ï Ï 15 j J 16 k K 17 l L 18 m M 19 n N 20 ñ Ñ 21 o O ò Ò ó Ó ô Ô õ Õ ö Ö ø Ø 22 p P 23 q Q 24 r R 25 s S ß 26 t T þ Þ 27 u U ù Ù ú Ú û Û ü Ü 28 v V 29 w W 30 x X 31 y Y ý Ý ÿ 32 z Z 33 } 34 ); 35 my @stuff = european_sort(<>); 36 37 print foreach (@stuff);Veamos un ejemplo de ejecución:
lhp@europa:~/Lperl/src/perltesting$ cat -n pruebaspanish.txt 1 ñfñb 2 nomo 3 Chacina 4 cerezo 5 cz 6 obde 7 Choza 8 óbde 9 cáñamo 10 aéae 11 Dinamarca 12 fgh 13 ñame 14 áéae 15 ée lhp@europa:~/Lperl/src/perltesting$ ./spanishsort.pl pruebaspanish.txt | cat -n 1 aéae 2 áéae 3 cáñamo 4 cerezo 5 cz 6 Chacina 7 Choza 8 Dinamarca 9 ée 10 fgh 11 nomo 12 ñame 13 ñfñb 14 obde 15 óbdeEscriba un programa que reciba como entrada un fichero de texto y dos números y ordene de acuerdo a los criterios de ordenación del español las líneas comprendidas entre esos dos números. Si no se proporcionan números ordenará todo el fichero. Si sólo se proporciona un número ordenará desde esa línea hasta el final del fichero.
$ spsort resumen.txt 10 30 # ordenar líneas entre la 10 y la 30 $ spsort resumen.txt 30 # de la 30 en adelante $ spsort resumen.txt # ordenar todo resumen.txt