我无法打印 Readline 输入中的默认文本

我无法打印 Readline 输入中的默认文本

我正在为我的数据库编写一个界面,并且希望能够编辑条目。我以为我会使用 Readline,但无法让它工作。我想说我的代码应该可以工作,基于术语::ReadLine::GnuSE 上的这个答案

perl -w -MTerm::ReadLine -E'
$term = new Term::ReadLine "ProgramName";
$prompt = "prompt> ";
sub su {insert_text("----default----");};
$attributes = $term->Attribs;
$attributes{startup_hook} = \&su;
while (defined ($_ = $term->readline($prompt)))
{ eval; }
'

我收到干净的提示:

prompt> 

虽然我期望这样:

prompt> ----default----

我对 Perl 仍然不是很流利,而且这变得越来越复杂。我这边有bug吗?是不是少了什么?或者是模块实现中的漏洞?

答案1

我发现我可以使用这个语法:

$term->readline($prompt, $default)

这比问题中的代码更短、更简单。

我在这里找到了它:术语::ReadLine::Perl5,虽然我还不确定这三个是如何相关的:

  • 术语::ReadLine::Perl5
  • 术语::ReadLine::Gnu
  • 术语::ReadLine

(不过这个问题仍然悬而未决。)

相关内容