Моей perl-программе необходимо переключаться между ncurses и необработанной консолью, поскольку она выполняет системный вызов в цикле, например так (упрощено для выделения проблем):
- init Cdk
- настоящее меню
- deinit Cdk
- запустить системный вызов
К сожалению, Cdk, по-видимому, инициализирует ncurses при импорте use Cdk
, а не его создании
(Cdk::init()
) и поэтому я не знаю, как это отключить. Такое поведение кажется мне совершенно абсурдным; кроме описанного выше цикла, моя программа также имеет специальный режим, в котором инициализируется база данных - эта часть не представляет никакого меню (только необработанный вывод на консоль), но все же может показаться, что теперь мне нужно отформатировать весь вывод с помощью меню - хотя даже не используя меню! И снова, просто для того, чтобы распечатать вывод справки программы, теперь, похоже, мне нужно сгенерировать виджет Cdk - безумие.
Есть ли способ легко прыгать и выходить из ncurses при использовании Cdk или я ввернут?
Пример кода:
#!/usr/bin/perl
use Cdk;
eval {popupLabel(["popup before init"]);}; # will fail as init() isn't called
print "Test after use\n"; # won't be printed (which is a problem!)
Cdk::init();
print "Test after init\n"; # won't be printed
popupLabel(["popup after init"]);
Cdk::end();
print "Test after end\n"; # won't be printed