一文字入力待ち
Term::ReadKeyやIO::Promptモジュールを使うと利用者からの一文字入力待ちの処理を簡単に書けるようになります。
getc関数も一文字入力ですが、バッファリングの影響でEnterキーが押されるまで入力待ちしてしまう場合があり、これを避けるための処理(例えばstty)が必要になるのでモジュールを使う方が良いでしょう。
私の環境ではWindows XPのActive Perl上ではIO::Promptを使おうとすると Cannot write to terminal というエラーになり上手く行きませんでした。
use strict; use warnings; use Term::ReadKey; use Time::HiRes; print "Hit Any Key.\n"; my $key; while (not defined ($key = ReadKey(-1))) { Time::HiRes::sleep(0.1); } printf "input key is [%s]\n", $key;
use strict; use warnings; use IO::Prompt; # -one_char 一文字入力 # -echo 表示文字 my $key = prompt "Hit Any Key.\n", -one_char, -echo => ''; printf "input key is [%s]\n", $key;
関連項目
・getc関数・タイムアウト処理
・入力文字列の履歴を保存
・Yes/No確認プロンプト