说什么方式
在Perl中等待输入的10秒
如果没有认可的输入 打印一些东西
?
答案 0 :(得分:3)
IO::Select
和can_read
超时。
#!/usr/bin/env perl
use strict;
use warnings;
use IO::Select;
my $select = IO::Select->new();
$select->add( \*STDIN );
my $input = "NONE";
if ( $select->can_read(10) ) {
$input = <STDIN>;
}
print "Got input of $input\n";
答案 1 :(得分:1)
您可以使用alarm()
,
use strict;
use warnings;
sub timeout {
my ($f, $sec) = @_;
return eval {
local $SIG{ALRM} = sub { die };
alarm($sec);
$f->();
alarm(0);
1;
};
}
my $text;
my $ok = timeout(sub{ $text = <STDIN>; }, 10);
if ($ok) {
print "input: $text";
}
else {
print "timeout occurred\n";
}