Wie kann ich Akzente beim Vergleichen von Zeichenfolgen in Perl ignorieren?
Ich habe diese Quizanwendung, in der ich finde, welche Personen die richtige Antwort eingeben. Im Moment mache ich im Grunde Folgendes:
if ($input =~ /$answer/i) {
print "you won";
}
Es ist schön, als ob die Antwort "Fisch" ist. Der Benutzer kann "einen Fisch" eingeben und eine gute Antwort erhalten.
Das Problem, mit dem ich konfrontiert bin, ist, dass meine Benutzer, da ich Franzose bin, in der Lage sein möchten, beispielsweise einen Benutzer zu akzeptieren, der "taton" eingibt, und die Antwort "tâton" ist.
Also, was ich tun könnte, ist:
use POSIX qw(locale_h);
use locale;
setlocale(LC_TYPE, "fr_FR.ISO8859-15");
setlocale(LC_COLLATE, "fr_FR.ISO8859-15");
Und in meiner Prüfroutine mache ich:
$input = lc($input);
$input =~ tr/àáâãäåçèéêëìíîïñòóôõöùúûüýÿ/aaaaaaceeeeiiiinooooouuuuyy/;
und sowas auch mit der antwort.
Ich mag es nicht, weil ich Dinge hart codieren muss und an dem Tag, an dem ich beschließe, die ISO-8859-15-Welt für die UTF-8-Welt zu verlassen, bin ich zum Scheitern verurteilt.
Also, ich suche nach einem Weg, um Zeichenfolgen zu vergleichen, das macht"tâton" eq "taton"
, "maçon" eq "macon"
oder"macon" =~ /maçon/
wahr sein