電子書籍の厳選無料作品が豊富!

perl, v5.8.6で、Perl/Tkを利用した環境です。

従来は、Windows-XP(x32)で利用していて、特に問題なかったのですが、
同じ環境をWindows7(x32)に導入して利用しようとしたところ、
Menu メソッド呼び出しのところで、ちょうど Devel::peekのdumpで表示させた
ような内容のものが、DOSプロンプト上に出てしまいます。

↓こちらの記事(英文)に書かれていることも試してみましたが、解決できませんでした。
http://community.activestate.com/forum-topic/per …

Windows7だからということではなさそうですが、
この表示が出てしまう原因、出さなくする方法について、教えてください。
何かご存知の方、よろしくお願い致します。

サンプルスクリプト: test.pl
-----------------------------
use strict;
use Tk;
my $mw = MainWindow->new();
my $menu = $mw->Menu();
MainLoop;
-----------------------------

このスクリプトをWindows7環境上で実行すると、
MainWindowのダイアログは画面に正しく表示されていますが、
DOSプロンプトで、下記のメッセージも出てしまいます。
⇒4行目(my $menu = $mw->Menu();)をコメントアウトするとこの表示は出ません。

-----------------------------
C:\Perl\Tk\Win7>test.pl
@ 535 not utf8
SV = PV(0x3d4f9d0) at 0x3d53870
REFCNT = 2
FLAGS = (POK,pPOK,UTF8)
PV = 0x3d0d9e4 "\203\201\203C\203\212\203I 9"\0 [UTF8 "\x{c1}C\x{c3}C\x{ca}\x{283}\x{c9}I 9"]
CUR = 10
LEN = 11
SV = PVMG(0x214bf74) at 0x3d53870
REFCNT = 2
FLAGS = (SMG,POK,pPOK,UTF8)
IV = 0
NV = 0
PV = 0x3d0d9e4 "\203\201\203C\203\212\203I 9"\0 [UTF8 "\x{c1}C\x{c3}C\x{ca}\x{283}\x{c9}I 9"]
CUR = 10
LEN = 11
MAGIC = 0x3d5d5a4
MG_VIRTUAL = &PL_vtbl_utf8
MG_TYPE = PERL_MAGIC_utf8(w)
MG_LEN = 10

A 回答 (1件)

5.10から Tk ではなく Tkx というモジュールが添付されるようになっているのですが、


それの場合質問にあるような警告は出ないようです。
ただし、スクリプトを手直しする必要があります。

あるいは、Windows7の設定でメニューで使用するフォントをxpと同じ
MS UI Gothic にしてもでないようになるかもしれません。
現状ではメイリオを使うようになっていると思います。

Windows フォントを変更する
http://windows.microsoft.com/ja-JP/windows7/Chan …

この手順でウィンドウの色とメトリックの変更画面まで行って、
「メニュー」のフォントを切り替えてみてください。

この回答への補足

sakusaker7 さん
ご回答ありがとうございます。拝見いたしました。
今、GWの休暇に入ってしまい、少しお時間いただきますが、
ご指定の内容のうち、フォント変更の方法を試してみようと思います。
結果が分かり次第、ご回答としてあらためてご報告させて頂きます。
ありがとうございました。

補足日時:2011/04/29 12:10
    • good
    • 0
この回答へのお礼

sakusaker7 さん
できました!ありがとうございました。

コントロールパネルの「ウィンドウの色とデザイン」で、
指定する部分(I):を「メニュー」
フォント(F):を「MS UI Gothic」にすると問題のダンプは出なくなりました。

さらに、別の方に教えて頂いたのですが、
もともとの
PV = 0x3d0d9e4 "\203\201\203C\203\212\203I 9"\0 [UTF8 "\x{c1}C\x{c3}C\x{ca}\x{283}\x{c9}I 9"]
の部分の文字コードを次のようにprintすると・・・

>perl -e "print \"\203\201\203C\203\212\203I 9\""
メイリオ 9

と出ていたようです。


それで、次は、メイリオのままにしておいて、
ダンプが出なくなる方法について興味が湧くところではあります。

'perl' 'meiryo'とかで検索してみて、次のようなページを見つけました。
http://magicant.txt-nifty.com/main/2010/08/windo …
こちらを参考にしてみようと思います。
(でも、perl 5.8. ではそもそも無理なのかも知れませんね)

とにかく、次のヒントとなるキーワードにもたどり着けるようになれました。
重ね重ね、ご回答ありがとうございました。

お礼日時:2011/05/10 21:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!