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

Perl6:getc处于原始模式

发布时间:2020-12-15 21:57:15 所属栏目:大数据 来源:网络整理
导读:我正在使用Perl 6模块 Term::termios. #!/usr/bin/env perl6use v6;use Term::termios;my $saved_termios := Term::termios.new(fd = 1).getattr;my $termios := Term::termios.new(fd = 1).getattr;$termios.makeraw;$termios.setattr(:DRAIN);loop { my $c
我正在使用Perl 6模块 Term::termios.
#!/usr/bin/env perl6
use v6;
use Term::termios;

my $saved_termios := Term::termios.new(fd => 1).getattr;
my $termios := Term::termios.new(fd => 1).getattr;
$termios.makeraw;
$termios.setattr(:DRAIN);

loop {
   my $c = $*IN.getc;
   print "got: " ~ $c.ord ~ "rn";
   last if $c eq 'q';
}

$saved_termios.setattr(:DRAIN);

当我运行此脚本并按下向上箭头,向下箭头,向右箭头,向左箭头和q时,这是输出:

#after arrow-up:
got: 27
got: 91

#after arrow-down:
got: 65
got: 27
got: 91

#after arrow-right:
got: 66
got: 27
got: 91

#after arrow-left:
got: 67
got: 27
got: 91

#after q:
got: 68

#after another q:
got: 113

但我原以为:

#after arrow-up:
got: 27
got: 91
got: 65

#after arrow-down:
got: 27
got: 91
got: 66

#after arrow-right:
got: 27
got: 91
got: 67

#after arrow-left:
got: 27
got: 91
got: 68

#after q:
got: 113

如何修改脚本以获得所需的输出?

解决方法

替换我的$c = $* IN.getc;我的$c = $* IN.read(1);并更改代码的其余部分以处理缓冲区而不是字符串.

(编辑:李大同)

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

    推荐文章
      热点阅读