[英]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.