Perl/Tkで日本語(Win32:ActivePerl 5.8.x/5.10.0)

今回試したバージョンは次の通り:
PerlWin32版 ActivePerl 5.8.8 および 5.10.0
Tk804.028

ActivePerl 5.8.8まで標準だった Tk は ActivePerl 5.10.0 から含まれなくなった。したがって、ActivePerl 5.10.0 場合、Perl/Tk を使うにはコマンドラインから「ppm install Tk」などとしてインストールする必要がある。
Perl/Tkを使うにはプログラムの先頭でソースファイルに使うエンコーディングを指定する必要がある。ソースコードをShift JIS(CP932)にする場合、次のように宣言する。
use encoding 'CP932';

UTF-8にする場合、次のように宣言する。
use utf8;

つまり、use encoding とソースファイルのエンコーディングが一致していれば、EUCでもShift JIS でも問題ない。
ただし、Shift JIS の場合はいろいろな問題が起きるので、UTF-8にしたほうがいい。
(詳細は「Perl 5.8.X の use encoding 'shiftjis' の副作用」を参照)


次のプログラムをUTF-8で保存して実行すると日本語が正常に表示できていることを確認できる。
use utf8;
use Tk;

my $mw = new MainWindow;
$mw->Button(-text=>'こんにちは',-command=>sub{exit})->pack;
MainLoop;

実行結果はこんな感じ。
画像

この記事へのコメント

この記事へのトラックバック

  • ActivePerl 5.8.X で日本語処理をする

    Excerpt: Windows で ActivePerl 5.8.X 以降を使う場合、次のように宣言すると、標準入出力やPerl/Tkも日本語で使えるようになる。ソースプログラムも Shift-JISコードで保存でき.. Weblog: ハードなソフトの話 racked: 2008-02-12 23:59
  • Perl/Tkで日本語のファイル名を使う(Win32)

    Excerpt: 今回試したバージョンは「Perl/Tkで日本語」と同じ。 Perl/Tk では、getOpenFileを使うとダイアログボックスを使ってファイル名を選ぶことができる。たとえば、ファイルを選択して、ファ.. Weblog: ハードなソフトの話 racked: 2008-02-14 01:45
  • Excerpt: 今回も試したバージョンは「Perl/Tkで日本語」と同じ。 Weblog: ハードなソフトの話 racked: 2008-02-14 21:23