按键时需要Perl代码来中断循环

  • 本文关键字:代码 中断 循环 Perl perl
  • 更新时间 :
  • 英文 :


我有一个脚本可以执行,但我需要一个循环,当用户运行不同的测试时,该循环告诉进程睡眠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);
}

最新更新