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

Perl Command Line Interpreter crashing on exit

我遇到一个问题,即退出 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;
}

此代码生成以下输出:

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

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


Perl 版本信息:

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

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