Windows で Strawberry Perl を実行しています。コマンド プロンプトに「デフォルト値」を出力して、ユーザーが編集できるようにしたいのですが、Enter キーを押すと、Perl はそれを新しい STDIN 行として認識します。IO::Promptを使用するように言われましたが、これは Windows では機能しないことが確立されています。
Tkなどで GUI を作成する以外に、どうすればこれを行うことができますか?
Windows で Strawberry Perl を実行しています。コマンド プロンプトに「デフォルト値」を出力して、ユーザーが編集できるようにしたいのですが、Enter キーを押すと、Perl はそれを新しい STDIN 行として認識します。IO::Promptを使用するように言われましたが、これは Windows では機能しないことが確立されています。
Tkなどで GUI を作成する以外に、どうすればこれを行うことができますか?
ExtUtils :: MakeMakerには、prompt
プラットフォームに非常に依存しない関数があります。私はそれがあなたのケースで使用されることを示唆していませんが、IO :: Prompt :: TinyのPODは、そのprompt
機能がそれを行う方法に基づいていると述べてExtUtils::MakeMaker
います。スモークテストは、IO :: Prompt :: Tinyがより優れた移植性(Windowsを含む)を達成したことを反映しているようです。あなたはそれを試してみるかもしれません。
ExtUtils::MakeMaker
確かに言うと、この新しいモジュールのスモークテストは少し早いですが、がに基づいている場合はprompt
、移植性を考慮して設計されています。
Term::Promptは別のオプションです。それはずっと長く、マルチプラットフォームのスモークテストの成功の長い歴史があります。ただし、との非コア依存関係がTerm::ReadKey
ありText::Wrap
ます。 IO::Prompt::Tiny
それが懸念される場合は、コアの依存関係に固執します。
use IO::Prompt::Tiny qw( prompt );
my $input = prompt( 'Proceed? (y/n)', 'n' );
出力:
Proceed? (y/n) [n]