我有一个执行的脚本,但我需要一个循环,告诉进程在用户运行不同的测试时睡眠20-30秒。
完成测试后,用户按 Enter 继续脚本停止的位置。如果在20-30秒的时间内未按下 Enter ,则脚本将在没有用户输入的情况下继续运行。
我尝试了以下代码,但它无限期地暂停了脚本 - 它在20秒后没有继续,但它也不接受 Enter 。
use Term::ReadKey;
ReadMode 4;
do {
sleep 20;
} until ( defined( $key = ReadKey(-1) ) );
ReadMode 0;
答案 0 :(得分:1)
尝试使用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 yet\n";
sleep 5;
}
print "Get key $key\n";
ReadMode 0; # Reset tty mode before exiting
答案 1 :(得分:1)
以下是一些代码:
use Term::ReadKey;
ReadMode(4);
my $key;
my $wait = 20;
for (my $x = 0; $x < $wait; $x++) {
if (defined ($key = ReadKey(-1))) {
print "key pressed\n";
break;
}
print "waiting for key press\n";
sleep(1);
}