$|= 1; my $next= time() + 60; while( 1 ) { print "\a"; sleep $next-time(); $next += 60; } #### use Time::HiRes; $|= 1; my( $next, $us )= gettimeofday(); while( 1 ) { print "\a"; $next += 60; usleep tv_interval( [$next,$us], [gettimeofday()] ); }