#!/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:
为什么我不会在这里找到一些奇怪的标志呢?
答案 0 :(得分:3)
简单地说,Term :: ReadKey假定Unix不提供终端,Windows不提供(除非你使用Cygwin)。
您可以尝试使用Win32::Console。或者可能会有一些咒语让Term :: ReadKey起作用 - 祝你好运。
答案 1 :(得分:1)
您无法从提供角色的界面获取密钥。这就是为什么你为一把钥匙买了很多东西的原因。
在unix端,键被转换为特定于终端的内联转义序列,你必须自己弄明白。
在Windows中,您可以自己获取密钥,但显然不是来自提供像ReadKey
这样的字符的界面。
我最近showed如何在Windows中获取密钥。不知道如何在unix中这样做。