在Perl中等待输入的定义时间段

时间:2015-11-28 16:17:40

标签: linux perl

说什么方式

  

等待输入的10秒
  如果没有认可的输入   打印一些东西

在Perl中

2 个答案:

答案 0 :(得分:3)

IO::Selectcan_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";
}