私は perl の初心者で、スクリプトでユーザー入力を読み始めたばかりです。
chomp(my $inp = <> );
他の言語でユーザー入力のターミネーターとして Return キーを使用することに慣れていましたが、キーを 1 回押した後、またはいくつかの文字の後に Return キーを押した後にユーザー入力の読み取りを停止する方法がわかりません。UNIX で実行されている perl では、ひし形演算子を介して入力をキャプチャするには、入力の最後に Ctrl-D を押す必要があるようです。
私の問題は、ユーザーにリストが表示され、「A」、「B」、または「C」を押すように求められるインタラクティブなメニューを作成したいということです。彼がこれらのキーのいずれかを押したら、彼が Ctrl D を押すのを待たずに、条件に従ってループしたいと思います。このレベルのインタラクティブなユーザー入力を perl で取得するにはどうすればよいですか? Cでは、私はgetch
. Bash では、 and を使用しread
ます$REPLY
。
Return キーを使用してユーザー入力を終了する方法も知りたいです。
単一の文字を取得するために、perldoc は次のように言及しています。
if ($BSD_STYLE) {
system "stty cbreak </dev/tty >/dev/tty 2>&1";
}
else {
system "stty", '-icanon', 'eol', "\001";
}
$key = getc(STDIN);
if ($BSD_STYLE) {
system "stty -cbreak </dev/tty >/dev/tty 2>&1";
}
else {
system 'stty', 'icanon', 'eol', '^@'; # ASCII NUL
}
print "\n";
確かにperlのような言語ではthat
難しくないですか?
編集:私が探していたものはネイティブに利用できないようです。ただし、IO::Prompter が解決策のようです。