Como posso ignorar acentos ao comparar seqüências de caracteres em Perl?
Eu tenho esse aplicativo de questionário, onde identifico o que as pessoas digitam com a resposta certa. Por enquanto, o que faço é basicamente isso:
if ($input =~ /$answer/i) {
print "you won";
}
É legal, como se a resposta fosse "peixe", o usuário pode digitar "um peixe" e receber uma boa resposta.
O problema que estou enfrentando é que, bem, meus usuários são franceses e gostaria de aceitar, digamos, um usuário digitando "taton" e a resposta sendo "tâton".
Então, o que eu poderia fazer é:
use POSIX qw(locale_h);
use locale;
setlocale(LC_TYPE, "fr_FR.ISO8859-15");
setlocale(LC_COLLATE, "fr_FR.ISO8859-15");
E na minha rotina de verificação, faça um:
$input = lc($input);
$input =~ tr/àáâãäåçèéêëìíîïñòóôõöùúûüýÿ/aaaaaaceeeeiiiinooooouuuuyy/;
e algo da mesma forma com a resposta.
Não gosto, porque tenho que codificar as coisas e, no dia em que decidi que estou deixando o mundo ISO-8859-15 para o mundo UTF-8, estou condenado.
Então, eu estou procurando uma maneira de comparar strings, que fará"tâton" eq "taton"
, "maçon" eq "macon"
ou"macon" =~ /maçon/
seja verdadeiro.