Term::ReadLine - 我需要点击向上箭头两次才能检索历史记录

2024-05-12

我正在使用 Term::ReadLine 并遇到一个奇怪的问题,我需要点击向上箭头两次才能从 addhistory 中检索项目。这是我正在使用的脚本。

use Term::ReadLine;

my $term = Term::ReadLine->new('Term1');
print $term->ReadLine."\n";

while (defined(my $cmd = $term->readline())) {
    $term->addhistory($cmd) if $cmd =~ /\S/;
}

为了进行测试,我将输入一些“命令”,然后尝试使用向上箭头检索这些命令。我按向上箭头一次,最后一个项目立即出现,但在检索每个后续项目之前,我需要按向上箭头两次。

我早些时候在我正在进行的一个小项目中遇到了这个问题,并且遇到了遇到同样问题的人。此问题的解决方案是对 addhistory 行进行如下修改:

$term->addhistory($cmd) if $cmd !~ /\S||\n/;

它起作用了,所以我继续前进,直到 Tanktalus 在我发布的另一个问题中提出了这个问题。Perl 术语::ReadLine::Gnu 信号处理困难 https://stackoverflow.com/questions/13316232/perl-termreadlinegnu-signal-handling-difficulties

他问“/\S||\n/ 应该做什么?”。好吧,让我去查找建议此修复的页面...是的...找不到它。因此,虽然我可以使它与我发布的修改一起工作,但我有点卡住了,因为 A. 我不知道为什么它修复了它,B. 为什么我似乎是唯一一个遇到这个问题的人?

任何帮助或建议将不胜感激! :)

使用以下版本测试了上述脚本:

Perl - 5.12.4 and 5.16.1
Term::ReadLine::Gnu - 1.20
Term::ReadLine::Perl - 1.0303 (Just tried it to make sure it wasn't Gnu)
Term::ReadLine - 1.10

/\S||\n/将始终匹配,因此您永远不会调用 addhistory。如果$term->Features->{autohistory}是的,无论如何你都不需要。

“点击向上箭头两次”是指每两个向上箭头就在历史记录中向上移动一次吗?如果是这样,那么罪魁祸首就是你对 addhistory 不必要的调用。完全删除该调用就是适当的修复方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Term::ReadLine - 我需要点击向上箭头两次才能检索历史记录 的相关文章

随机推荐

  • 如何使用 SQL Server 查询对“版本号”列进行排序

    我想知道我们当中的 SQL 天才是否可以向我伸出援助之手 我有一个专栏VersionNo在表中Versions包含 版本号 值 例如 VersionNo 1 2 3 1 1 10 3 1 1 4 7 2 etc 我正在寻找对此进行排序 但不
  • 如何在Oracle数据库11g中创建新模式/新用户?

    我已经申请了一家公司的实习机会 作为一个问题 他们要求我为他们的公司创建一个具有一定要求的架构 并将DDL文件 我已经安装了 Oracle 数据库 11g Express 版本 但如何在 Oracle 数据库 11g 中创建新架构 我在网上
  • 正确配置JDK环境变量后仍然找不到java命令

    我在 Windows 虚拟机启动时安装 JDK 使用 cloudinit 用户数据将 PowerShell 脚本传输到 Windows 计算机 然后运行该脚本来安装 JDK softwares Get ItemProperty HKLM S
  • XcodeColors 在 XCode 5 中不起作用

    我尝试安装XcodeColors在 XCode 5 中 但不幸的是 它不能与我从 XCode 4 6 获得的旧插件一起使用 下一步 我检查了 github 网站 在那里我看到了以下拉取请求 提供了 XCode 5 的工作版本 https g
  • 如何在 StatusIcon 上显示文本而不是设置图标?

    我是 Gtk 和 Python 的初学者开发人员 我正在尝试创建一个 gtk StatusIcon 显示文本字符串来代替图标 我如何使用 PixBuf 或任何其他方式来完成此任务 Thanks 使用 Python 和 GTK3 的示例 fr
  • Android 中的 JDBC 连接

    有没有人在 android 中尝试过 JDBC 连接 因为在 Android 2 3 中支持 JDBC 我必须在没有 Web 服务的情况下连接 Mysql 我已经提出申请 但它给了我错误 public class MysqlConnect
  • 为什么这会破坏 UILabel adjustmentFontSizeToFitWidth?

    iOS 7 Xcode 5 使用 UILabel 此代码可以工作 自动调整文本大小以适应 self testLabel numberOfLines 0 self testLabel lineBreakMode NSLineBreakByWo
  • C# 中的可选参数

    我在下面的代码中使用可选参数 但这显示错误 不允许使用默认参数说明符 任何人都可以帮助我 先生 public void getno int pvalu string pname 看起来有些答案中存在一些错误信息 C 4 中引入了可选参数 因
  • EDI AS2 HTTP 跟踪?

    我们正在研究 AS2 实现 并希望能够构建有意义的测试用例以与 SoapUI 或 Postman 一起使用 为了做到这一点 我们有两种方法 只是尝试从现有客户端进行 tcp 转储 跟踪调用 从普通 EDI 文档开始手动构建一些简单的调用 或
  • Install-Package:无法解析远程名称:“packages.nuget.org”[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 无缘无故地
  • 可视化对象检测图时 TensorBoard 挂起

    我需要可视化 TensorFlow 对象检测模型的结构 我正在尝试在 Colab 中使用 TensorBoard 并使用下面的代码 当 TensorBoard 加载日志时 它会卡在 命名空间层次结构 查找相似子图 步骤上 pip insta
  • 如何将视图动态添加到已在 xml 布局中声明的relativelayout?

    我宣布了一个RelativeLayout在 xml 布局文件中 现在我想添加Views从代码到现有布局 我添加了一个Button通过代码动态地更改为现有布局 如下所示 rLayout RelativeLayout findViewById
  • 通过 HTTPS 加载页面但请求不安全的 XMLHttpRequest 端点

    我有一个页面 上面有一些 D3 javascript 该页面位于 HTTPS 网站内 但证书是自签名的 当我加载页面时 我的 D3 可视化效果不显示 并且出现错误 混合内容 页面位于 https integration jsite com
  • 为什么 lodash 将我的数组转换为对象?

    我是 lodash 的新手 创建了一个函数 该函数从值为 null 或空白的对象中删除键 但是当我传递包含某些部分作为数组的对象时 它会删除数组并将其转换为对象 下面是我尝试过的代码 mixin removeFalsies this rem
  • 如何使用 django 过滤器 icontains 获取多个字段

    我正在尝试将查询搜索与所有模型字段进行比较 但我不知道如何在多个字段中执行此操作 这是我的代码 expense Expense objects filter user request user id order by date q requ
  • 如何在java中压缩/解压tar.gz文件

    谁能告诉我在java中压缩和解压缩tar gzip文件的正确方法我一直在搜索 但我能找到的最多的是zip或gzip 单独 我写了一个包装器公共压缩 http commons apache org compress called jarchi
  • Firebase如何获取用户详细信息?

    我在我的应用程序中使用 Firebase 身份验证 并使用电子邮件和密码注册用户 当用户使用自己的帐户登录时 我也想获取其他用户的详细信息 与登录用户分开 我怎样才能得到这些信息 电子邮件 显示名称和 ID 特定于身份验证系统 等值可从Fi
  • 当 OpenGL 中同时绑定 1D 和 2D 纹理时,正确的行为是什么?

    假设你有这样的东西 glBindTexture GL TEXTURE 2D my2dTex glBindTexture GL TEXTURE 1D my1dTex glBegin 正确的 OpenGL 行为是什么 要绘制一维纹理 二维纹理还
  • pip install ecos 错误,显示“需要 Microsoft Visual C++ 14.0”。 [复制]

    这个问题在这里已经有答案了 我正在尝试使用 pip install 在我的 anaconda 中安装 fancyimpute 但错误显示由于 需要 Microsoft Visual C 14 0 而无法安装 ecos 提供的链接已过期 有谁
  • Term::ReadLine - 我需要点击向上箭头两次才能检索历史记录

    我正在使用 Term ReadLine 并遇到一个奇怪的问题 我需要点击向上箭头两次才能从 addhistory 中检索项目 这是我正在使用的脚本 use Term ReadLine my term Term ReadLine gt new