我使用Term :: ReadLine :: Gnu, 我尝试使用event_loop,event_hook或callback_read_char属性但没有成功。
使用event_loop,我在doc
中尝试示例$term->event_loop(sub {
my $data = shift;
$data->[1] = AE::cv();
$data->[1]->recv();
}, sub {
my $fh = shift;
my $data = [];
$data->[0] = AE::io($fh, 0, sub { $data->[1]->send() });
$data;
});
我有:
不能在Term :: ReadLine :: Gnu
中执行`event_loop'
event_hook有效但不像我想要的......在等待不仅仅是在打印字符时,它经常被调用。
我没有找到如何使用callback_read_char属性,如果符合我的需要......
那么,如何检查输入(仅打印数字)并将输入长度限制为10位? 我怎样才能做到这一点?还是我必须使用另一个模块?
答案 0 :(得分:0)
这就是我想要的:
#!/usr/bin/perl -w
use strict;
use warnings;
use Term::Screen::ReadLine;
use Data::Dumper;
main();
sub main
{
$| =1 ;
my $scr = new Term::Screen::ReadLine;
$scr->clrscr();
$scr->at(1,17)->puts('xxxxxxxxxxxxxxxxxxxxxxxxx');
$scr->at(2,21)->puts('*****************');
$scr->at(4,0)->puts('- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
$scr->at(5,0)->puts(' xxxxxxxxxxxxxxxxxxxxxx: ...................');
my $line=$scr->readline(
ROW => 5,
COL => 26,
LEN => 19,
DISPLAYLEN => 19,
LINE => '',
ONLYVALID => "[[:digit:]]+",
CONVERT => undef,
PASSWORD => undef,
OVERWRITE => 1,
);
$scr->at(6,0)->puts(' debug => :' . $line);
}