加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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

发布时间:2020-12-14 02:27:33 所属栏目:Windows 来源:网络整理
导读:我在cygwin下运行Perl脚本,它从 STDIN获取输入.并持续处理请求. #!/usr/bin/perlprint "Enter Input:";while(STDIN) { print "Recieved Input: $_"; print "Enter Input:";} $perl testPerl.pl Enter input:input1 Recieved input:input1 Enter input:inpt2
我在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 enivronment(cmd.exe)下运行时,它的行为与预期的一样
但是cygwin下的问题是向上箭头字面意思是将光标向上移动1行,即它接受“接收输入:输入2”行

请分享您对此的看法.

解决方法

查看Term :: Readline模块.这将接管您的程序的输入,并处理历史,这是我认为你在谈论的.

这将是您的程序直接翻译为使用Term :: ReadLine:

 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/;
 }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读