Perl命令行解释器在退出时崩溃

时间:2015-06-08 14:29:14

标签: perl user-interface crash interpreter tkx

我遇到一个问题,即退出Perl Tkx脚本会导致Perl命令行解释器崩溃。

例如:

use strict;
use warnings;
use Tkx;

my $mw     = Tkx::widget->new('.');
my $button = $mw->new_ttk__button(-text => "Hello", -command => \&main);

Tkx::pack($button);

Tkx::MainLoop;

sub main {
    print "TESTING\n";
    exit 0;
}

此代码生成以下输出:

Main Window

点击" Hello"按钮调用main()子程序,打印" TESTING"然后尝试退出并崩溃命令行解释器:

Error Message

这似乎只发生在Tkx脚本中,并且只有在程序在调用MainLoop之前已经输入exit时才会崩溃。有谁知道这里发生了什么?

Perl版本信息:

Perl Version

1 个答案:

答案 0 :(得分:1)

当我从64位Perl切换到32位Perl时,似乎开始出现此问题。切换回64位版本的Perl解决了这个问题。

值得注意的是,choroba在退出之前使用g_destroy销毁主窗口的解决方案确实解决了问题,即使在运行32位版本的Perl时也是如此。也可以更好的做法是在退出之前手动销毁你的窗口,即使Perl可以自己清理它......你永远不知道其他人试图运行你的脚本可能有什么版本的Perl!