循环直到达到时间

时间:2016-09-20 16:25:26

标签: perl

我有一个应用程序循环读取一个大文本文件并运行至少48小时。

我想在23.00到08.00(晚上11点到早上8点)停止执行,然后在白天继续执行。

我尝试了以下代码,但它没有退出循环。

Dave Cross回复后的编辑

./gradlew connectedAndroidTest

这不能按预期工作。现在它是18:48并且循环立即退出,除非我使用前一小时:

my $min = (localtime)[1];
my $hour = (localtime)[2];

while ( $hour > 18 and $min > 0 ) {
    sleep(1);
    $hour = (localtime)[2];
    $min = (localtime)[1];
}

1 个答案:

答案 0 :(得分:4)

您需要多次检查时间: - )

而不是调用strftime(),为什么不使用localtime()的返回值?

my $hour = (localtime)[2];

while ($hour >= 23 or $hour < 8) {
  sleep(1);
  $hour = (localtime)[2];
}

更新:更有效的方法可能是计算出sleep()多长时间才能在早上8点醒来。一个天真的方法是这样的:

if ((localtime)[2]) >= 23) {
  sleep(9 * 60 * 60); # sleep for nine hours
}