【问题标题】:Why does Term::ReadLine work for gcc4 compiled per but not gcc6?为什么 Term::ReadLine 对 gcc4 有效,但对 gcc6 无效?
【发布时间】:2019-07-31 03:19:44
【问题描述】:

我刚刚注意到 Term::ReadLine 的功能在从 perl 的 gcc4 编译版本升级到 gcc6 编译版本后发生了变化(更糟)。使用 gcc4,退格键被正确解释,允许用户编辑他/她输入的行。 gcc6 版本显然没有,返回一个 ^?每次输入退格键。

这是我用来测试的一些简单代码......

#!/tool/pandora64/.package/perl-5.24.0-gcc620/bin/perl5.24.0
#/tool/pandora64/.package/perl-5.24.0/bin/perl5.24.0

use strict;
use Term::ReadLine;

my $answer;
my $term = Term::ReadLine->new('EDIT_STDIN');
$term->ornaments(0);
$answer = $term->readline("Enter something here....");

print "answer: $answer\n";

exit;

事实上,该脚本无法正确解释退格键,如上所述。交换第 1 行和第 2 行,它工作正常。

Sooooo.....任何想法为什么会发生这种情况?鉴于我无法返回 gcc4,有关如何使其工作的任何建议?

【问题讨论】:

  • 它与您的编译器无关,与您的 TERM 环境变量和操作系统配置以及 readline 库有关。几乎可以肯定那里也发生了一些变化。
  • 两个版本的perl下$term->ReadLine的值是多少? (这里的案例很重要!)
  • 如果问题的说法是准确的,交换 shebang 行是在正确和不正确行为之间切换所需要的,那么这相当强烈地暗示环境(包括$TERM)和操作系统配置是两种情况相同。不过,可能会链接到不同的 readline 库。
  • 我想你可能已经用 $term->ReadLine 的 val 击中了 Dave... 对于有效的版本,它是... "Term::ReadLine::Gnu" 。对于失败的版本,它是...... "Term::ReadLine::Stub" 。 “存根”?这是怎么回事?

标签: perl


【解决方案1】:

在这种特殊情况下,问题在于 Perl 5.24.0-gcc620 缺少 Term::ReadLine::Gnu。安装后运行良好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-01
    • 2023-03-09
    • 2017-08-31
    • 2022-01-12
    • 2020-05-14
    • 2020-10-07
    相关资源
    最近更新 更多