文字列を小文字化 (Case Folding) する
fc
は、Perl 5.16 以上の環境で、かつ、use feature qw(fc);
を宣言したときに利用できます。
feature
プラグマの代わりに use v5.16;
でも有効になります。
fc
は引数に与えられた文字列を小文字化しますが、正確には Case Folding と呼ばれる変換を行います。
Case Folding とは、英語のアルファベットだけが対象なら単なる小文字化であり、
lc
関数と結果に違いはありません。
use feature qw(fc);
print fc 'HELLO'; # hello
しかし、fc
は英語のアルファベットを超えて広範囲な文字集合での小文字化を行います。
例えば、ドイツ語の文字のエスツェットを考えてみましょう。
lc
では何も変化は見られませんが、
fc
であれば ss
に変換されます。
use v5.16;
use utf8;
binmode STDOUT, ":utf8";
print lc 'ß'; # "ß" (変換されない)
print fc 'ß'; # "ss" (変換される)
なお、このような変換を行うためには、use utf8;
プラグマを宣言する必要がありますので注意してください。
この Case Folding は Unicode 仕様で規定されています。
どの文字がどのように変換されるかが分かる対応表が公開されていますので、
興味があればご覧ください。
基本的に英語と日本語しか扱わないのであれば、fc
を使わなければならないシーンはほとんどないかもしれませんね。