【发布时间】: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