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

Perl命令行解释器在退出时崩溃,perl,user-interface,crash,interpreter,tkx,Perl,User Interface,Crash,Interpreter,Tkx,我有一个问题,退出PerlTkx脚本会导致Perl命令行解释器崩溃 例: 此代码生成以下输出: 单击“Hello”按钮调用main()子例程,该子例程打印“TESTING”,然后尝试退出并使命令行解释器崩溃: 这似乎只在Tkx脚本中发生,只有在调用exit之前程序已经进入MainLoop时才会崩溃。有人知道这里发生了什么吗 Perl版本信息: 这个问题似乎是从我从64位Perl切换到32位Perl时开始的。切换回64位版本的Perl解决了这个问题 值得注意的是,choroba在退出之前使用

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

例:

此代码生成以下输出:

单击“Hello”按钮调用
main()
子例程,该子例程打印“TESTING”,然后尝试退出并使命令行解释器崩溃:

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


Perl版本信息:


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


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

在退出之前添加
$mw->g_destroy
怎么样?我想这是可行的,但是如果你不先手动销毁窗口,为什么会导致解释器崩溃呢?Perl应该能够清理和销毁窗口本身。在全局销毁过程中,对象可能以任何顺序被销毁。嗯,这很有趣。奇怪的是,在我从64位Perl切换到32位尝试解决另一个问题之前,这似乎起到了作用。我想这是在我切换到32位Perl之后出现的。我将尝试切换回64位版本,看看它是否可以在不使用
g_destroy
的情况下工作,我会告诉您我发现了什么。
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;
}