我keypad
设置为 1 是因为我想对输入的字符进行更多控制(例如,在下面的示例中,我想检测一个. 如果我关闭,KEY_DOWN
这将不起作用)。keypad
但是,我需要检测一个字符是否可打印。我以为我可以使用[[:print:]]
,但我误解了一些东西。例如,如果我运行以下 MWE 并输入退格键,我会得到输出263
while I would like output not printable
。我可以尝试通过调节来解决这个问题,length(character) == 1
但这似乎是我应该避免的一种技巧,我想学习正确的方法。
#!/usr/bin/perl -w
use strict;
use Curses;
initscr();
my $good_win = newwin(1, 2, 3, 1);
keypad($good_win, 1);
my $character = $good_win->getch();
if ($character eq KEY_DOWN) {
print "you did a down arrow";
}
if ($character =~ "[[:print:]]") {
print "you entered: $character\n";
}
else {
print "not printable\n";
}
exit();
请注意,我是一个有诅咒和输入字符处理的新手(你不需要对批评感到遗憾,但我这样说只是为了让你知道我真的不知道我在做什么并且会感激任何详细解释)。