首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >术语::ReadKey::ReadKey:为什么MS Windows的行为与Linux不同?

术语::ReadKey::ReadKey:为什么MS Windows的行为与Linux不同?
EN

Stack Overflow用户
提问于 2012-04-17 00:52:32
回答 2查看 541关注 0票数 0

Term::ReadKey

代码语言:javascript
复制
#!/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时,我得到的输出是下面的两倍:

代码语言:javascript
复制
Enter a key: |k|  
|undef|  
|undef|  
END

当我按下Up“键”时,我得到

代码语言:javascript
复制
Enter a key: |  
|[|  
|A<  
END  

在Linux上,但在Windows上,脚本会停止运行:

代码语言:javascript
复制
Enter a key:

为什么我来到这里,而不是一些奇怪的迹象?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-17 01:08:12

简单地说,Term::ReadKey采用Unixy终端,而Windows不提供这种终端(除非你使用Cygwin)。

您可以尝试使用Win32::Console。或者可能有一些咒语可以让Term::ReadKey工作--祝你好运。

票数 3
EN

Stack Overflow用户

发布于 2012-04-17 03:20:24

你不能从一个给你字符的界面中获取密钥。这就是为什么你用一把钥匙买了一大堆东西。

在unix方面,键被转换为特定于终端的内联转义序列,您必须自己弄清楚。

在Windows中,你可以自己获取密钥,但显然不能像ReadKey那样从提供字符的界面获取。

我最近在Windows中showed了如何获取密钥。不知道在unix中如何做到这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10178317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档