Perl命令行解释器在退出时崩溃
我有一个问题,退出PerlPerl命令行解释器在退出时崩溃,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在退出之前使用
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;
}