1

我有一个可以执行的脚本,但是我需要一个循环来告诉进程在用户运行不同的测试时休眠 20-30 秒。

完成该测试后,用户按下Enter以从脚本停止的位置继续。如果Enter在 20-30 秒内未按下,则脚本将继续运行而无需用户输入。

我尝试了以下代码,但它无限期地暂停了脚本——它在 20 秒后不会继续,但它也不接受Enter.

use Term::ReadKey;
ReadMode 4;
do {
    sleep 20; 
} until ( defined( $key = ReadKey(-1) ) );
ReadMode 0;
4

2 回答 2

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
于 2013-07-15T05:07:19.090 回答
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);
}
于 2014-01-28T21:01:47.580 回答