我正在为我的数据库编写一个界面,并且希望能够编辑条目。我以为我会使用 Readline,但无法让它工作。我想说我的代码应该可以工作,基于术语::ReadLine::Gnu和SE 上的这个答案。
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
(不过这个问题仍然悬而未决。)