1.9 Unicode合成文字が含まれている文字列を正規化する
出力すると全く同じに見える文字列でも、eqで等しいかどうかを検証すると等しくなかったり、場合によってはそれぞれの長さが異なっていたりする。このような文字列をPerlに同じだと認識させたい。
# 等しくない文字列の一方または両方にUnicodeの基底文字と結合文字のペア # (結合文字シーケンス)が含まれている場合は、それらの文字列は直接比較 # せず、Unicode::NormalizeモジュールのNFD()関数で正規化してから比較する。 use Unicode::Normalize; $s1 = "fa\x{E7}ade"; $s2 = "fac\x{0327}ade"; if (NFD($s1) eq NFD($s2)) { print "Yup!\n" }