私はこのクイズ アプリケーションを持っており、人々が入力したものと正しい答えを一致させます。今のところ、私がしていることは基本的に次のとおりです。
if ($input =~ /$answer/i) {
print "you won";
}
答えが「魚」であるかのように、ユーザーが「魚」と入力すると、良い答えとしてカウントされるので、これは素晴らしいことです。
私が直面している問題は、私がフランス人であるため、ユーザーが「taton」と入力し、答えが「tâton」であることを受け入れることができるようにしたいということです。
だから、私ができることは次のとおりです。
use POSIX qw(locale_h);
use locale;
setlocale(LC_TYPE, "fr_FR.ISO8859-15");
setlocale(LC_COLLATE, "fr_FR.ISO8859-15");
そして、私のチェックルーチンでは、次のことを行います:
$input = lc($input);
$input =~ tr/àáâãäåçèéêëìíîïñòóôõöùúûüýÿ/aaaaaaceeeeiiiinooooouuuuyy/;
答えも同様です。
私はそれが好きではありません。なぜなら、私は物事をハードコーディングしなければならず、ISO-8859-15 の世界を離れて UTF-8 の世界に移ろうと決心した日、私は運命づけられているからです。
だから、文字列を比較する方法を探しています。それは"tâton" eq "taton"
、"maçon" eq "macon"
または"macon" =~ /maçon/
真になります。