Perl 调试器在 Perlbrew 下不能使用方向键

Perl debugger does not work with arrow keys under Perlbrew

我想要箭头键用于 perl 调试器中的命令历史记录。 This solution 看起来不错,所以因为我正在使用 ubuntu,所以我尝试了

sudo aptitude install libterm-readline-gnu-perl

但是,我仍然在 perl 调试器中得到 ^[[A^[[B 的回显,而不是 previous/next 命令。

我发现这是我 perlbrew 环境中的一个问题。如果我 运行 /usr/bin/perl -d 箭头键 工作(即安装仅针对该 perl 修复它)。

如何让调试器在 perlbrew 下工作?

作为最后的努力,在我的 perlbrew 环境中,我尝试了 cpanm Term::ReadLine::Gnu 但出现了错误

Could not find neither libtermcap.a, libncurses.a, or libcurses.

我可以开始安装更多的库,但感觉我还缺少其他东西,因为这只是一个影响 Perlbrew 的问题。

通过您的发行版的包系统安装的 Perl 模块仅在您的发行版的 perl 中可用(即 /usr/bin/perl)。其他 perl 安装(例如由 perlbrew 管理的安装)不受影响。这就是其他 perls 看不到 Term::ReadLine::Gnu.

的原因

从 perlbrew 环境(例如通过 cpan 或 cpanm)安装 Term::ReadLine::Gnu 是正确的解决方案。您遇到的错误可能是由于缺少开发 headers(Term::ReadLine::Gnu 是 readline C 库的包装器,因此需要 headers 来构建)。尝试安装 ncurses-dev(使用 aptitude),然后再次 运行 cpanm

安装@melpomene 建议的软件包确实可以解决问题。

但我发现另一种解决方案不需要需要开发包(因此不需要root)。 以下 个 CPAN 包可以单独使用:

  • Term::ReadLine::Perl(Readline 库的 Perl 实现)
  • Term::Readline::Zoid(Pure Readline 库的 Perl 实现)

由于 Perlbrew 有时(经常?)在您没有 root 的环境中使用,这可能是一个更方便的解决方案。