我的 perl 程序需要在 ncurses 和原始控制台之间跳转,因为它在循环中执行系统调用,如下所示(为强调问题而简化):
- 初始化CDK
- 当前菜单
- deinit Cdk
- 运行系统调用
不幸的是,Cdk 似乎在use Cdk
导入时初始化 ncurses 而不是实例化()Cdk::init()
,所以我不知道如何禁用它。这种行为对我来说似乎完全荒谬。除了上面描述的循环之外,我的程序还有一个初始化数据库的特殊模式——这部分不提供任何类型的菜单(只有原始控制台输出),但看起来我现在必须用菜单格式化我的所有输出- 虽然甚至不使用菜单!再一次,现在只是打印程序帮助输出似乎需要我生成一个 Cdk 小部件 - 太疯狂了。
有没有办法在使用 Cdk 时轻松跳入和跳出 ncurses还是我搞砸了?
一些示例代码:
#!/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