現在、WindowsXP上のActivePerlでperl/Tkのプログラムを作っています。
Tk::Entryに日本語を入れると、かなりの頻度でperlが落ちるようです。
#utf8と何か関係があり?んんん?
CPANの最新ソースを覗いたらutf8対応を行っているようですが、
この問題は、すぐには解決されない気がしてます。
-textvariableを使えば、安定した動作が望める気配なので(憶測です)、
<FocusIn>でフックしてIME入力を行うプログラムを作成しました。
#kinput2モドキといえば分かりやすいかな。
とりあえず動作するものは出来たのですが、何ぶんWindowsは素人なので
どなたか評価して*改善して*もらえたらと思い記事を書き込みました。
私にメールを送ってもらえれば、ソースをお送りします。
mailto:hasim...@kokusyou.co.jp (橋本一人 はしもとかずひと)
In article <o8vDb.1658$vR3.1...@news1.rdc1.ky.home.ne.jp>, "hasimoto38" <hasim...@kokusyou.co.jp> writes
> 現在、WindowsXP上のActivePerlでperl/Tkのプログラムを作っています。
> Tk::Entryに日本語を入れると、かなりの頻度でperlが落ちるようです。
> #utf8と何か関係があり?んんん?
これは、なんか体験した記憶がある... 落ちるのはもちろんバグな
んですけど... フォントの設定の問題だったような気がする。
> -textvariableを使えば、安定した動作が望める気配なので(憶測です)、
> <FocusIn>でフックしてIME入力を行うプログラムを作成しました。
> #kinput2モドキといえば分かりやすいかな。
> とりあえず動作するものは出来たのですが、何ぶんWindowsは素人なので
> どなたか評価して*改善して*もらえたらと思い記事を書き込みました。
でも、もうWindows では使わないからなぁ....
---
Shinji KONO @ Information Engineering, University of the Ryukyus,
河野真治 @ 琉球大学工学部情報工学科,
橋本さんwrote:
>現在、WindowsXP上のActivePerlでperl/Tkのプログラムを作っています。
>Tk::Entryに日本語を入れると、かなりの頻度でperlが落ちるようです。
>#utf8と何か関係があり?んんん?
>CPANの最新ソースを覗いたらutf8対応を行っているようですが、
>この問題は、すぐには解決されない気がしてます。
>
>-textvariableを使えば、安定した動作が望める気配なので(憶測です)、
><FocusIn>でフックしてIME入力を行うプログラムを作成しました。
>
ActivePerlのバージョンや、Tkのバージョンが明記されていないので、
バグかどうかは分かりませんが、少なくてもActivePerl Build 807で、
かつTkが804.025であれば、正常に動きますよ。実験のため、以下の
ようなチョンプロを書いて実験してみました。EntryにIMEから日本語
を入力してReturnキーを押すと、コンソールに入力内容を出力すると
いう、極めて簡単なものです。
#!perl
use strict;
use warnings;
use Tk;
use Encode;
my $mw = MainWindow->new();
my $var;
my $entry = $mw->Entry(
-width => 20,
-font => 15,
)->pack;
$entry->bind('<Key>', [\&disp, Ev('K')]);
sub disp {
if ( $entry->get and $_[1] eq "Return" ) {
print encode("shiftjis", $entry->get), "\n";
}
}
MainLoop;
(以下、橋本さんの文面です。)
橋本です。
> ActivePerlのバージョンや、Tkのバージョンが明記されていないので、
> バグかどうかは分かりませんが、少なくてもActivePerl Build 807で、
> かつTkが804.025であれば、正常に動きますよ。
私の環境はActivePerl Build 807、Tk 804.024です。
TkはBuild 807にバンドルされているものを使っています。
> 正常に動きますよ。
804.024では、Entryの表示幅を超える入力を行うと確実に落ちます。
804.025では問題ないのでしょうか?
Windowsでperl/Tkを使っている人っていないのかな?
他にも奇妙なバグを発見したので、今の所、WindowsではTkを
使わないことをお薦めます。
橋本さんwrote:
>私の環境はActivePerl Build 807、Tk 804.024です。
>TkはBuild 807にバンドルされているものを使っています。
>
>> 正常に動きますよ。
>
>804.024では、Entryの表示幅を超える入力を行うと確実に落ちます。
>804.025では問題ないのでしょうか?
>
804.025では全然問題ないですね。そもそも、804.024って大バグがあったので
有名ですし、そのすぐ後に「Tk804.024 "jumbo patch"」なるパッチが出ました。
私個人から言わせると、バグと言うよりは、Perl5.6以前を対象にしてたがために、
すべて中途半端で、utf8も本格的に対応していなかったはずです。
>Windowsでperl/Tkを使っている人っていないのかな?
>他にも奇妙なバグを発見したので、今の所、WindowsではTkを
>使わないことをお薦めます。
>
厳しい言い方をすれば、上記に私が書いたことを知らない人は、Perl/Tk
を使うべきでないということでしょう。
それに、804.025が出ているのですから、インストールすればいいだけの
話であって、「使わないことをお薦めます。」というのはちょっとおかしい
ですよ。804.024ではutf8対応していないのだから、そこをわきまえて使えば
いいですし、日本語等を使いたければバージョンアップすればいいし、何の
問題もないはずです。要はバンドルされているからと言って、無反省に使うなと
いうことでしょう。
Perl/TkのMLは、なんか知らないうちに追い出されたようなきが...
In article <brv4me$2n71$1...@dojima-n0.hi-ho.ne.jp>, taro-n...@sam.hi-ho.ne.jp (西野 太 郎) writes
> 804.025では全然問題ないですね。そもそも、804.024って大バグがあったので
> 有名ですし、そのすぐ後に「Tk804.024 "jumbo patch"」なるパッチが出ました。
> 私個人から言わせると、バグと言うよりは、Perl5.6以前を対象にしてたがために、
> すべて中途半端で、utf8も本格的に対応していなかったはずです。
ふーん。
> 問題もないはずです。要はバンドルされているからと言って、無反省に使うなと
> いうことでしょう。
ま、そうれはそうなんだけど。
patch を追うのがめんどくて、Tk800.024 をいまだに使ってます。
ある意味で動けば古くてもいいわけなので。
ひさしぶりに入れ換えてみるか。
804.025を使ってみます。
西野さん、河野さん、ありがとうございました。
別件になりますが…
ActivePerlで使っているのはMicrosoftのCですよね。
西野さんはMicrosoftのCをお持ちですか?
私は持ってないので、Tkの部分だけMinGWを使ってTk.dllを
作ろうと思っていますが、この場合にダイナミックリンクは
正常に行われるのでしょうか?
ご存知なら教えて頂けないですか。
>別件になりますが…
>ActivePerlで使っているのはMicrosoftのCですよね。
>西野さんはMicrosoftのCをお持ちですか?
>私は持ってないので、Tkの部分だけMinGWを使ってTk.dllを
>作ろうと思っていますが、この場合にダイナミックリンクは
>正常に行われるのでしょうか?
>ご存知なら教えて頂けないですか。
>
私は、CPANからビルドする機会が多いので、MS Visual C++も持ってます
けど、コンパイラが無くても、
ppm install http://theoryx5.uwinnipeg.ca/ppms/Tk.ppd
で、804.025がインストール出来ますが。
> ppm install http://theoryx5.uwinnipeg.ca/ppms/Tk.ppd
> で、804.025がインストール出来ますが。
本当に何から何まで教えて頂きありがとうございます。
ppm installだと、"already installed"と怒られてしまうので、
以下の手順でアップグレードしました。
#ppmって何だか分かりにくい。
ppm repository "xxx" http://theoryx5.uwinnipeg.ca/
ppm upgrade Tk -install -precious
無事に804.025で日本語が入力できました。いやはや。