0

私は 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 が解決策のようです。

4

1 に答える 1