如何在Perl中实时暂停

如何在Perl中实时暂停,perl,Perl,我对Perl很陌生,这是我在这里的第一篇文章,所以请温和一点 我在60秒的倒计时中使用real time,需要能够每10秒停止一次,然后用户必须在每10秒的间隔输入是否要继续倒计时。计时器工作,我只是不知道如何暂停它,让用户输入他们的响应。作为一个尽可能基本的答案将是非常受欢迎的,因为我还不了解很多。谢谢,这是我到目前为止的代码 my $countdown = 1*60; #60 seconds $| = 1; #disable output buffering my $start_time

我对Perl很陌生,这是我在这里的第一篇文章,所以请温和一点

我在60秒的倒计时中使用real time,需要能够每10秒停止一次,然后用户必须在每10秒的间隔输入是否要继续倒计时。计时器工作,我只是不知道如何暂停它,让用户输入他们的响应。作为一个尽可能基本的答案将是非常受欢迎的,因为我还不了解很多。谢谢,这是我到目前为止的代码

my $countdown = 1*60; #60 seconds
$| = 1; #disable output buffering

my $start_time = time;
my $end_time = $start_time + $countdown;


for (;;) {
    my $time = time;
    last if ($time >= $end_time);
    printf("\r%02d:%02d:%02d",
        ($end_time - $time) / (1*60),
        ($end_time - $time) / 60%60,
        ($end_time - $time) % 60,
    );

    sleep(1);
}

在收到用户的响应后更新
$end\u time

while (1) {
    $countdown--;
    $time = time;
    last if ($time >= $end_time);
    printf("\r%02d:%02d:%02d",
        ($end_time - $time) / (1*60),
        ($end_time - $time) / 60%60,
        ($end_time - $time) % 60,
    );

    sleep(1);
    if ($countdown%10 == 0) {
        print "Continue? ";
        $answer = <>;
        chomp $answer;
        last if $answer ne 'y';
        $end_time = time + $countdown;
    }
}
while(1){
$倒计时--;
$time=时间;
上次if($time>=$end\u时间);
printf(“\r%02d:%02d:%02d”,
($end_time-$time)/(1*60),
($end_time-$time)/60%60,
($end_time-$time)%60,
);
睡眠(1);
如果($倒计时%10==0){
打印“是否继续?”;
$answer=;
咀嚼$answer;
最后如果$ANE'y';
$end_time=时间+倒计时$;
}
}

在收到用户的响应后更新
$end\u time

while (1) {
    $countdown--;
    $time = time;
    last if ($time >= $end_time);
    printf("\r%02d:%02d:%02d",
        ($end_time - $time) / (1*60),
        ($end_time - $time) / 60%60,
        ($end_time - $time) % 60,
    );

    sleep(1);
    if ($countdown%10 == 0) {
        print "Continue? ";
        $answer = <>;
        chomp $answer;
        last if $answer ne 'y';
        $end_time = time + $countdown;
    }
}
while(1){
$倒计时--;
$time=时间;
上次if($time>=$end\u时间);
printf(“\r%02d:%02d:%02d”,
($end_time-$time)/(1*60),
($end_time-$time)/60%60,
($end_time-$time)%60,
);
睡眠(1);
如果($倒计时%10==0){
打印“是否继续?”;
$answer=;
咀嚼$answer;
最后如果$ANE'y';
$end_time=时间+倒计时$;
}
}

在收到用户的响应后更新
$end\u time

while (1) {
    $countdown--;
    $time = time;
    last if ($time >= $end_time);
    printf("\r%02d:%02d:%02d",
        ($end_time - $time) / (1*60),
        ($end_time - $time) / 60%60,
        ($end_time - $time) % 60,
    );

    sleep(1);
    if ($countdown%10 == 0) {
        print "Continue? ";
        $answer = <>;
        chomp $answer;
        last if $answer ne 'y';
        $end_time = time + $countdown;
    }
}
while(1){
$倒计时--;
$time=时间;
上次if($time>=$end\u时间);
printf(“\r%02d:%02d:%02d”,
($end_time-$time)/(1*60),
($end_time-$time)/60%60,
($end_time-$time)%60,
);
睡眠(1);
如果($倒计时%10==0){
打印“是否继续?”;
$answer=;
咀嚼$answer;
最后如果$ANE'y';
$end_time=时间+倒计时$;
}
}

在收到用户的响应后更新
$end\u time

while (1) {
    $countdown--;
    $time = time;
    last if ($time >= $end_time);
    printf("\r%02d:%02d:%02d",
        ($end_time - $time) / (1*60),
        ($end_time - $time) / 60%60,
        ($end_time - $time) % 60,
    );

    sleep(1);
    if ($countdown%10 == 0) {
        print "Continue? ";
        $answer = <>;
        chomp $answer;
        last if $answer ne 'y';
        $end_time = time + $countdown;
    }
}
while(1){
$倒计时--;
$time=时间;
上次if($time>=$end\u时间);
printf(“\r%02d:%02d:%02d”,
($end_time-$time)/(1*60),
($end_time-$time)/60%60,
($end_time-$time)%60,
);
睡眠(1);
如果($倒计时%10==0){
打印“是否继续?”;
$answer=;
咀嚼$answer;
最后如果$ANE'y';
$end_time=时间+倒计时$;
}
}

在执行6次的循环中使用10秒倒计时

for my $i (1..6) {
    if ($i != 1) {
        print "\nContinue? ";
        $answer = <>;
        chomp $answer;
        last if !( $answer eq 'y' || $answer eq 'yes' );
    }

    countdown(10);
}

在执行6次的循环中使用10秒倒计时

for my $i (1..6) {
    if ($i != 1) {
        print "\nContinue? ";
        $answer = <>;
        chomp $answer;
        last if !( $answer eq 'y' || $answer eq 'yes' );
    }

    countdown(10);
}

在执行6次的循环中使用10秒倒计时

for my $i (1..6) {
    if ($i != 1) {
        print "\nContinue? ";
        $answer = <>;
        chomp $answer;
        last if !( $answer eq 'y' || $answer eq 'yes' );
    }

    countdown(10);
}

在执行6次的循环中使用10秒倒计时

for my $i (1..6) {
    if ($i != 1) {
        print "\nContinue? ";
        $answer = <>;
        chomp $answer;
        last if !( $answer eq 'y' || $answer eq 'yes' );
    }

    countdown(10);
}


$input=将等待用户的输入。在循环中使用10秒计时器执行6次。每次循环中的减量
$countdown
。用户回答提示后,使用当前时间和
$countdown
的值重新计算
$end\u time
。是否希望在等待用户输入时计时器暂停?我希望可以使用Perl实时暂停。这将是最方便的将等待用户的输入。在循环中使用10秒计时器执行6次。每次循环中的减量
$countdown
。用户回答提示后,使用当前时间和
$countdown
的值重新计算
$end\u time
。是否希望在等待用户输入时计时器暂停?我希望可以使用Perl实时暂停。这将是最方便的将等待用户的输入。在循环中使用10秒计时器执行6次。每次循环中的减量
$countdown
。用户回答提示后,使用当前时间和
$countdown
的值重新计算
$end\u time
。是否希望在等待用户输入时计时器暂停?我希望可以使用Perl实时暂停。这将是最方便的将等待用户的输入。在循环中使用10秒计时器执行6次。每次循环中的减量
$countdown
。用户回答提示后,使用当前时间和
$countdown
的值重新计算
$end\u time
。是否希望在等待用户输入时计时器暂停?我希望可以使用Perl实时暂停。这将是最方便的。这可能会阻止程序,但不会暂停计时器。他的代码中没有计时器,他只是倒计时,并在每次迭代之间休眠1秒。如果你花10秒回答,程序将运行60秒。如果回答需要20秒,程序将运行60秒。这不会暂停计时器,除非你回答最后一个问题的时间超过10秒。非常感谢你们的帮助!我尝试了两种代码,但Barmar的代码对我来说更好一些。再次感谢!这可能会阻塞程序,但不会暂停计时器。他的代码中没有计时器,他只是倒计时,在每次迭代之间睡眠1秒。如果你花10秒回答,程序将运行60秒。如果回答需要20秒,程序将运行60秒。这不会暂停计时器,除非你回答最后一个问题的时间超过10秒。非常感谢你们的帮助!我尝试了两种代码,但Barmar的代码对我来说更好一些。再次感谢!这可能会阻塞程序,但不会暂停计时器。他的代码中没有计时器,他只是倒计时,在每次迭代之间睡眠1秒。如果你花10秒回答,程序将运行60秒。如果回答需要20秒,程序将运行60秒。这不会暂停计时器,除非你回答最后一个问题的时间超过10秒