在 Perl 中如何 运行 一个函数直到时间是 5 秒的倍数?

How do I run a function until time is multiple of 5 seconds in Perl?

我是 Perl 新手。如何创建一个循环直到当前时间是 5 秒的倍数?

如果你只是想暂停你的进程直到秒数是 5 的倍数,那么你可以像这样使用 Time::HiRes 模块

use Time::HiRes qw/ gettimeofday usleep /;

my ($s, $us) = gettimeofday;
my $delay = 1_000_000 * (5 - $s % 5) - $us;
usleep $delay;

# Do stuff

或者如果你想执行一些代码直到下一个 5 秒的倍数然后使用这个

use Time::HiRes qw/ gettimeofday tv_interval /;

my $t1 = [ gettimeofday ];
$t1->[0] += 5 - $t1->[0] % 5;
$t1->[1] = 0;

while ( tv_interval([ gettimeofday ], $t1) > 0 ) {
  # Do stuff
}

如果您真的需要秒数是五的倍数,Borodin 的答案就是您想要的。但是,您是否可能只想在程序中实现五秒延迟?如果是:

sleep 5;