モダンPerl#32でTerm::Encodingを知った

2010年6月 2日
| コメント(0) | トラックバック(0) モダンPerl#32でTerm::Encodingを知った

モダンPerlの記事を読んで、Term::Encodingを知った。

ときには外からどのような入力がくるかわからない場合もありますが,コンソールアプリケーションであれば宮川達彦氏のTerm::Encodingというモジュールを利用すれば標準入出力のエンコーディングを判定できます。

今まで、手動で「cp932」と入力していたのだが、Term::Encodingを使ってやれば自動的に文字コード(エンコーディング)を判別できるではないか、というわけです。

とりあえずやってみました。

# utf8
use 5.8.1;
use strict;
use warnings;
use utf8;
 
use Data::Dumper;
 
use Term::Encoding qw(term_encoding);
my $encoding = term_encoding;
 
print Dumper $encoding;

実行結果は以下のとおり。

$VAR1 = 'cp932';

文字コード(エンコーディング)を示す文字列が得られました。
というわけで、文字コード(エンコーディング)を直接書かずにTerm::Encodingを使って「ハローワールド」を表示してみると以下のようになりました。

# utf8
use 5.8.1;
use strict;
use warnings;
use utf8;
 
use Term::Encoding qw(term_encoding);
my $encoding = term_encoding;
 
binmode STDOUT => ":encoding($encoding)";
 
print "ハローワールド!";

binmodeを使わずに書くと、

# utf8
use 5.8.1;
use strict;
use warnings;
use utf8;
 
use Encode;
use Term::Encoding qw(term_encoding);
my $enc = Encode::find_encoding(term_encoding);
 
print $enc->encode("ハローワールド!");

な感じです。

トラックバック(0)

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

コメントする

Google検索

Last.fm

このブログ記事について

このページは、のぶりんが2010年6月 2日 01:37に書いたブログ記事です。

ひとつ前のブログ記事は「App-Genpassを試してみた」です。

次のブログ記事は「HTML::TreeBuilderでHTMLの解析をするモダンなPerlスクリプト」です。

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

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