use warnings; use strict; use Time::HiRes qw/ clock_gettime clock_nanosleep CLOCK_REALTIME TIMER_ABSTIME /; die "Don't have nanosleep" unless Time::HiRes::d_nanosleep(); my $run = 1; $SIG{INT} = sub { $run = 0 }; while ($run) { my $now_s = int(clock_gettime(CLOCK_REALTIME)); clock_nanosleep(CLOCK_REALTIME, ($now_s+1)*1e9, TIMER_ABSTIME); last unless $run; print clock_gettime(CLOCK_REALTIME), "\n"; }