Perl/Tkで日本語(Win32:ActivePerl 5.8.x/5.10.0)
今回試したバージョンは次の通り:
ActivePerl 5.8.8まで標準だった Tk は ActivePerl 5.10.0 から含まれなくなった。したがって、ActivePerl 5.10.0 場合、Perl/Tk を使うにはコマンドラインから「ppm install Tk」などとしてインストールする必要がある。
Perl/Tkを使うにはプログラムの先頭でソースファイルに使うエンコーディングを指定する必要がある。ソースコードをShift JIS(CP932)にする場合、次のように宣言する。
UTF-8にする場合、次のように宣言する。
つまり、use encoding とソースファイルのエンコーディングが一致していれば、EUCでもShift JIS でも問題ない。
ただし、Shift JIS の場合はいろいろな問題が起きるので、UTF-8にしたほうがいい。
(詳細は「Perl 5.8.X の use encoding 'shiftjis' の副作用」を参照)
次のプログラムをUTF-8で保存して実行すると日本語が正常に表示できていることを確認できる。
実行結果はこんな感じ。
Perl | Win32版 ActivePerl 5.8.8 および 5.10.0 |
Tk | 804.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;
実行結果はこんな感じ。
この記事へのコメント