在我的curses程序中,我有时需要使用ungetch
一次性放回很多字符。但是,有一个限制:
foreach my $character (reverse split('', "put back this string")) {
ungetch($character);
}
对于大字符串,ungetch
失败(它返回-1,我应该检查上面的内容)。如何在我必须执行getch
之前增加缓冲区或限制来控制我必须推回多少个字母?
答案 0 :(得分:4)
缓冲区的大小由Perl curses实现的底层curses库提供。在ncurses中,输入队列大小定义在ncurses/curses.priv.h,其中定义为FIFO_SIZE是MAXCOLUMNS + 2,对于较新版本的ncurses,它是137。
为了增加输入队列大小,您需要增加该值并重新编译系统的curses实现。
清除输入队列fifo_clear
的基础方法不会暴露在curses实现源代码之外,这意味着它不会提供给Perl绑定。我所知道的唯一提供的方法是getch,您已将其指定为解决方法。