Unengineered Weblog

PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND

perl のワンライナーで日本語 (UTF-8) を使う

ややこしかったので

こうする

$ perl -Mutf8 -CSDA [のこりのオプション...]

使用例

$ echo 'にゃんぱす' | perl -Mutf8 -CSDA -nlE 'say length($_);'
5

かんたんな説明

  • -Mutf8 でプログラムが UTF-8 で記述されていると指定
  • -C オプションの次の引数で要素が UTF-8エンコーディングしていることを指定
    • S stdin, stdout, stderr が UTF-8
    • D IO ストリームが UTF-8
    • A プログラムの起動時引数 @ARGVUTF-8

ちなみに -C オプションを引数なしに書くと -CSDL を指定したことになる。これは引数 A がない。だから引数に UTF-8エンコードされた文字列がくるとおかしくなる。

$ perl -Mutf8 -C -wE 'say $ARGV[0];' にゃんぱす
ã«ããã±ã

参考資料

  • -Mutf8 の説明

perldoc.perl.org

  • -CSDA の説明

perldoc.perl.org