Ошибка интерпретатора командной строки Perl при выходе

У меня есть проблема при выходе из 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() Подпрограмма, которая печатает "ТЕСТИРОВАНИЕ", а затем пытается выйти и завершает работу интерпретатора командной строки:

Сообщение об ошибке

Это только кажется, что происходит с Tkx скрипты и будет зависать только в том случае, если программа уже MainLoop перед звонком exit, Кто-нибудь знает, что здесь происходит?


Информация о версии Perl:

Версия Perl

1 ответ

Решение

Похоже, что эта проблема началась, когда я переключился с 64-битного Perl на 32-битный Perl. Возврат к 64-битной версии Perl решил проблему.

Стоит отметить, что решение Чороба уничтожить главное окно с помощью g_destroy Перед выходом все-таки удалось решить проблему даже при запуске 32-битной версии Perl. Также, вероятно, лучше вручную уничтожить ваше окно перед выходом, даже если Perl может очистить его самостоятельно... вы никогда не знаете, какую версию Perl может попытаться запустить ваш скрипт кто-то другой!

Другие вопросы по тегам