我有一个脚本可以执行,但我需要一个循环,当用户运行不同的测试时,该循环告诉进程睡眠20-30秒。
测试完成后,用户按Enter从脚本停止的位置继续。如果在20-30秒内未按下Enter,则脚本将在没有用户输入的情况下继续运行。
我尝试了以下代码,但它无限期地暂停了脚本——它在20秒后不会继续,但它也不接受Enter。
use Term::ReadKey;
ReadMode 4;
do {
sleep 20;
} until ( defined( $key = ReadKey(-1) ) );
ReadMode 0;
尝试while
循环而不是do{}
#!usr/bin/perl
use strict;
use warnings;
use Term::ReadKey;
ReadMode 4; # Turn off controls keys
my $key;
while ( !defined( $key = ReadKey(-1) ) ) {
print "No key yetn";
sleep 5;
}
print "Get key $keyn";
ReadMode 0; # Reset tty mode before exiting
下面是一些代码:
use Term::ReadKey;
ReadMode(4);
my $key;
my $wait = 20;
for (my $x = 0; $x < $wait; $x++) {
if (defined ($key = ReadKey(-1))) {
print "key pressedn";
break;
}
print "waiting for key pressn";
sleep(1);
}