perlでリターンキーを待たずにキーのデータを一つ読み取るには?

Term::ReadKeyを使えばいいらしい

使い方:

ReadModeで読み方を指定 引数は0~5のどれか
0・・・元々の設定に戻す
1・・・普通のモード
2・・・1と同じだがechoされない(自分が入力したものが見れないからパスワード入力などに使える)
3・・・cbreakモード Ctrl+Cで止めるとかできる
4・・・rowモード Ctrl+Cで止めるとか無理。改行コード変換はしてくれる。
5・・・4と同じだが改行コード変換はしてくれない。(Windows環境では4と5は同じ)

ReadKeyで読み込む 引数は0、-1、0より大きい値のどれか
0・・・getc見たいに1文字よみます(引数省略時のデフォルト)
-1・・・ノンブロッキングリード
引数>0・・・引数秒だけwaitし、時間になったらundefを返す


#!/usr/bin/perl

use Term::ReadKey;
print $Term::ReadKey::VERSION;
print "\n";
ReadMode 3;
while (1){
$char = ReadKey(5);
last if not defined $char;
printf ("%1s is %X ",$char,ord $char);
print "\n";
}




参考サイト
http://search.cpan.org/~stsi/TermReadKey/ReadKey.pm
http://perldoc.jp/docs/perl/5.10.0/perlfaq8.pod
http://www.jp-z.jp/perlmemo/IF_Term-ReadKey.html