【问题标题】:Windows Perl line editor with editable default value?具有可编辑默认值的 Windows Perl 行编辑器?
【发布时间】:2012-05-20 14:40:40
【问题描述】:

我在 Windows 上运行 Strawberry Perl,我想在命令提示符中打印一个“默认值”,以便用户可以编辑它,然后按 Enter 键,Perl 会将其视为新的 STDIN 行。我被告知使用IO::Prompt,但已经确定这在 Windows 中不起作用。

没有用Tk或其他东西制作GUI,我该怎么做?

【问题讨论】:

标签: windows perl command-line stdout stdin


【解决方案1】:

ExtUtils::MakeMaker 有一个prompt 函数,它非常独立于平台。我不建议在您的情况下使用它,但 IO::Prompt::Tiny 的 POD 声明其 prompt 函数基于 ExtUtils::MakeMaker 的方式。 smoke tests 似乎反映了 IO::Prompt::Tiny 实现了更好的可移植性(包括 Windows)。你可以试试看。

可以肯定的是,这个新模块的冒烟测试还为时过早,但如果它基于ExtUtils::MakeMakerprompt,它是为便携性而设计的。

Term::Prompt 是另一种选择。它存在的时间更长,并且在多平台烟雾测试方面的成功历史也更长。但它具有Term::ReadKeyText::Wrap 的非核心依赖项。 IO::Prompt::Tiny 坚持核心依赖,如果这是一个问题的话。

use IO::Prompt::Tiny qw( prompt );
my $input = prompt( 'Proceed? (y/n)', 'n' );

输出:

Proceed? (y/n) [n]

【讨论】:

  • IO::Prompter (test matrix) 也比 IO::Prompt 好。
  • @Sho Minamimoto:我只是想在几天后跟进,看看我的回答是否对您有帮助和有用。
  • 对于这种特殊情况,我实际上需要 Term::ReadLine 之类的东西,但我无法让它在 Windows 上工作,所以我找到了另一种解决方法。但是,您的设置有助于创建默认值,我只是想让我的用户在需要时对其进行编辑。
猜你喜欢
  • 2023-04-11
  • 1970-01-01
  • 2017-12-25
  • 1970-01-01
  • 2019-06-30
  • 1970-01-01
  • 2021-07-23
  • 2013-02-28
  • 1970-01-01
相关资源
最近更新 更多