Term::ReadKey
#!/usr/bin/env perl
use warnings;
use 5.012;
use Term::ReadKey;
my $key;
ReadMode 4;
print "Enter a key: ";
$key = ReadKey();
printf "|%s|\n", $key // 'undef';
$key = ReadKey(-1);
printf "|%s|\n", $key // 'undef';
$key = ReadKey(-1);
printf "|%s|\n", $key // 'undef';
ReadMode 0;
say "END";当我在Windows或Linux上运行这个脚本并按下k时,我得到的输出是下面的两倍:
Enter a key: |k|
|undef|
|undef|
END当我按下Up“键”时,我得到
Enter a key: |
|[|
|A<
END 在Linux上,但在Windows上,脚本会停止运行:
Enter a key:为什么我来到这里,而不是一些奇怪的迹象?
发布于 2012-04-17 01:08:12
简单地说,Term::ReadKey采用Unixy终端,而Windows不提供这种终端(除非你使用Cygwin)。
您可以尝试使用Win32::Console。或者可能有一些咒语可以让Term::ReadKey工作--祝你好运。
发布于 2012-04-17 03:20:24
你不能从一个给你字符的界面中获取密钥。这就是为什么你用一把钥匙买了一大堆东西。
在unix方面,键被转换为特定于终端的内联转义序列,您必须自己弄清楚。
在Windows中,你可以自己获取密钥,但显然不能像ReadKey那样从提供字符的界面获取。
我最近在Windows中showed了如何获取密钥。不知道在unix中如何做到这一点。
https://stackoverflow.com/questions/10178317
复制相似问题