0

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:

なぜ私は代わりにいくつかの奇妙な兆候ではなくここに来るのですか?

4

2 に答える 2

3

簡単に言えば、Term::ReadKey は Unixy 端末を想定していますが、これは Windows では提供されません (Cygwin を使用しない限り)。

代わりにWin32::Consoleを試すこともできます。または、Term::ReadKey を機能させる呪文がいくつかあるかもしれません--頑張ってください。

于 2012-04-16T17:08:12.337 に答える
1

キャラクターを与えるインターフェイスからキーを取得することはできません。そのため、1 つのキーにたくさんのものを入れることができます。

Unix 側では、キーは端末固有のインライン エスケープ シーケンスに変換され、自分で理解する必要があります。

Windowsでは、キー自体を取得できますが、明らかにそうであるように、文字を提供するインターフェイスから取得することはできませんReadKey

最近、Windows でキーを取得する方法を示しました。Unixでどうすればいいのかわかりません。

于 2012-04-16T19:20:23.527 に答える