2015-05-20 3 views
1

Я новичок в Perl. Как создать цикл, который выполняется до тех пор, пока текущее время не будет кратным 5 секундам?Как запустить функцию до тех пор, пока на Perl не будет кратковременно 5 секунд?

+0

Умеешь ли ты быть более конкретным? Я не уверен, что понимаю этот вопрос. – simbabque

+0

Вы просто хотите подождать до тех пор, пока секунды не составят пять, или вы хотите выполнить какую-либо операцию до тех пор? – Borodin

ответ

2

Если вы просто хотите, чтобы приостановить процесс до тех пор, секунды не кратна 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 
} 
0

Ответ Бородина - это то, что вы хотите, если вам действительно нужны секунды, чтобы быть кратным пяти. Однако возможно ли, что вы просто хотите реализовать пять вторых задержек в своей программе? Если да, то:

sleep 5; 
Смежные вопросы