http://www.perlmonks.org?node_id=11117960


in reply to Perl custom sort for Portuguese Lanaguage

TIMTOWTDI but here is a Schwartzian Transform approach.

#!/usr/bin/env perl use strict; use warnings; my @in = <DATA>; my @sorted = map { "$_->[1]$_->[0]" } sort { $a->[0] cmp $b->[0] } map { s/^([oa] )//; [$_, $1 // ''] } @in; print @sorted; __DATA__ # Drink a cerveja|beer a laranja|orange beber|to drink o copo de vinho|glass of wine o copo|glass or cup o sumo|juice
Any modules useful for general languages learning and grammar?

Grammar is tough. Have you looked at the modules in the Lingua::PT space? Perhaps Lingua:PT::Conjugate might be one place to start? Good luck.

Update: Just spotted the copo de vinho was out of order so here is an improved ST:

#!/usr/bin/env perl use strict; use warnings; my @in = <DATA>; my @sorted = map { $_->[1] } sort { $a->[0] cmp $b->[0] } map { /^(?:[oa] )?([^|]+)/; [$1, $_] } @in; print @sorted; __DATA__ # Drink a cerveja|beer a laranja|orange beber|to drink o copo de vinho|glass of wine o copo|glass or cup o sumo|juice