Ошибка интерпретатора командной строки 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:
1 ответ
Похоже, что эта проблема началась, когда я переключился с 64-битного Perl на 32-битный Perl. Возврат к 64-битной версии Perl решил проблему.
Стоит отметить, что решение Чороба уничтожить главное окно с помощью g_destroy
Перед выходом все-таки удалось решить проблему даже при запуске 32-битной версии Perl. Также, вероятно, лучше вручную уничтожить ваше окно перед выходом, даже если Perl может очистить его самостоятельно... вы никогда не знаете, какую версию Perl может попытаться запустить ваш скрипт кто-то другой!