【发布时间】:2012-05-20 14:40:40
【问题描述】:
我在 Windows 上运行 Strawberry Perl,我想在命令提示符中打印一个“默认值”,以便用户可以编辑它,然后按 Enter 键,Perl 会将其视为新的 STDIN 行。我被告知使用IO::Prompt,但已经确定这在 Windows 中不起作用。
没有用Tk或其他东西制作GUI,我该怎么做?
【问题讨论】:
标签: windows perl command-line stdout stdin
我在 Windows 上运行 Strawberry Perl,我想在命令提示符中打印一个“默认值”,以便用户可以编辑它,然后按 Enter 键,Perl 会将其视为新的 STDIN 行。我被告知使用IO::Prompt,但已经确定这在 Windows 中不起作用。
没有用Tk或其他东西制作GUI,我该怎么做?
【问题讨论】:
标签: windows perl command-line stdout stdin
ExtUtils::MakeMaker 有一个prompt 函数,它非常独立于平台。我不建议在您的情况下使用它,但 IO::Prompt::Tiny 的 POD 声明其 prompt 函数基于 ExtUtils::MakeMaker 的方式。 smoke tests 似乎反映了 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]
【讨论】: