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

2010年1月23日
| コメント(0) | トラックバック(0) PerlのWide characterについて実験してみた

普段は「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を使うときには気を付ける必要がありそうだ。

トラックバック(0)

このブログ記事に対するトラックバックURL:

コメントする

Google検索

Last.fm

このブログ記事について

このページは、のぶりんが2010年1月23日 10:22に書いたブログ記事です。

ひとつ前のブログ記事は「Strawberry PerlのPortable版をやめた」です。

次のブログ記事は「たまにはDBIx::Simpleを使ってみる」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Creative Commons License
このブログのライセンスは クリエイティブ・コモンズライセンス.
Powered by Movable Type