我是 perl 的初学者,刚刚开始在我的脚本中阅读用户输入。
chomp(my $inp = <> );
我已经习惯于使用 Return 键作为其他语言用户输入的终止符,并且不确定如何在按下单个按键或某些字符后跟 Return 键后停止读取用户输入。在 unix 上运行的 perl 中,通过菱形运算符捕获输入似乎需要按 Ctrl-D 才能结束输入。
我的问题是我想建立一个交互式菜单,向用户显示一个列表并要求按“A”、“B”或“C”。一旦他按下这些键中的任何一个,我想根据条件循环,而不是等待他按下 Ctrl D。如何在 perl 中获得这种级别的交互式用户输入?在 C 中,我会使用getch
. 在 Bash 中,我会使用read
and $REPLY
。
我还想知道如何使用 Return 键来终止用户输入。
为了获取单个字符,perldoc 提到:
if ($BSD_STYLE) {
system "stty cbreak </dev/tty >/dev/tty 2>&1";
}
else {
system "stty", '-icanon', 'eol', "\001";
}
$key = getc(STDIN);
if ($BSD_STYLE) {
system "stty -cbreak </dev/tty >/dev/tty 2>&1";
}
else {
system 'stty', 'icanon', 'eol', '^@'; # ASCII NUL
}
print "\n";
当然在像 perl 这样的语言中,这that
不难吗?
编辑:似乎我正在寻找的东西不是本机可用的。但是, IO::Prompter 似乎是解决方案。