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

在Perl中,如何运行函数直到时间是5秒的倍数?,perl,time,Perl,Time,我是Perl新手。如何创建一个循环,直到当前时间是5秒的倍数?如果您只想暂停进程,直到时间是5秒的倍数,那么您可以像这样使用该模块 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 Tim

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

如果您只想暂停进程,直到时间是5秒的倍数,那么您可以像这样使用该模块

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
}

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

sleep 5;

你能再具体一点吗?我不确定我是否理解这个问题。您是要等到秒数是5的倍数,还是要在那之前执行一些操作?