IT Office Nishimiyahara

個人用スマホから商用プログラミングまでなんでもお任せ下さい

PerlのWide characterについて実験してみた

      2014/05/13

普段は「binmode STDOUT => ':encoding(cp932)';」とやっているので、Wide characterとは無縁なわけです。 が、データベースとのやりとりを整理する上で気になったので、printとsayを標準出力とファイルで実験してみました。 使用したのはStrawberry Perlの5.10.1.0のmsi版。 結果を先に書くと、Perl6::Sayのsayコマンドは、STDOUTに出力するときは、内部形式から変換してくれるらしい事がわかりました。

普通、use utf8した状態で、Perlの内部形式のまま出力すると「Wide character in print ~~~」というようなエラーメッセージがでる。 しかし、Perl6::Sayのsayコマンドだとエラーにならない。 それなら、と思って「use Modern::Perl」してsayコマンドを試してみたのだが、こっちは「Wide character」になるのだ。 当然、「use feature ’say’」しても「Wide character」だった。 ソースはdevel.nqou.netのDirectory Listのmiscellaneous以下にあります。 まとめると以下のような感じ。 OKは問題なし。NGはWide character。 それ以外はエラー。

print Perl6::Say feature 'say' Modern::Perl (print) Modern::Perl (say)
STDOUTNGOKNGNGNG
FILENG(syntax error)NGNGNG
FILE(OO)(no method)NG(no method)(no method)(no method)

sayを使うときには気を付ける必要がありそうだ。

respo

respo link

ZenBackWidget

 - 情報技術について