windows - 如何在 cygwin 下处理 Perl 脚本中的箭头键?

标签 windows perl cygwin

我在 cygwin 下运行 Perl 脚本,它从 <STDIN> 获取输入并不断处理请求。

#!/usr/bin/perl
print "Enter Input:";
while(<STDIN>) {
    print "Recieved Input: $_";
    print "Enter Input:";
}



    $perl testPerl.pl        
    Enter input:input1
    Recieved input:input1
    Enter input:inpt2
    Recieved input:input2
    Enter input:

现在,我想要当前提示符处的向上箭头:“输入输入:”以获取之前的输入,即“input2”、“input1”

它在windows环境下运行时表现符合预期(cmd.exe)
但是 cygwin 下的问题是向上箭头字面上将光标向上移动 1 行,即它移动到“已接收输入:input2”行

请分享您对此的看法。

最佳答案

查看 Term::Readline 模块。这将接管您程序的输入,并处理历史记录,这就是我认为您正在谈论的内容。

这将是您的程序直接转换为使用 Term::ReadLine:

<pre> use Term::ReadLine; my $term = new Term::ReadLine 'Simple Perl calc'; my $prompt = "Enter Input: "; while ( defined ($_ = $term->readline($prompt)) ) { print "Recieved Input:$_\n"; $term->addhistory($_) if /\S/; } </pre>

关于windows - 如何在 cygwin 下处理 Perl 脚本中的箭头键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2078370/

相关文章:

Perl one-liner 提取字符组

perl - 从分隔 block 中解析数据

perl - Moose 类的依赖注入(inject)

c++ - 以编程方式模拟 Alt + Enter 按键不起作用

c++ - 如何 Hook 时间功能

c++ - DX9 从全屏切换到窗口给错误的客户区

c++ - 在 Cygwin 上使用 -std=c++11 编译会隐藏可用的系统调用

c - 调用 free 后内存使用量不会减少

c++ - 将 2 的补码转换为小数。输出是双

ruby - gem 构建 "recipe for target ' stemmer.so' 失败”