簡體   English   中英

如何在Perl中暫停實時

[英]How to pause real time in Perl

我對Perl還是很陌生,這是我在這里的第一篇文章,所以請保持謙虛。

我在60秒的倒數計時器中使用實時功能,因此需要每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_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;
    }
}

在執行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);
}

countdown只是您發布的代碼。

sub countdown {
    my ($length) = @_;

    my $start_time = time;
    my $end_time = $start_time + $length;
    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);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM