How do I sleep for a millisecond in Perl?

perl, sleep

Solution

From the Perldoc page on sleep:

For delays of finer granularity than one second, the Time::HiRes module (from CPAN, and starting from Perl 5.8 part of the standard distribution) provides usleep().

Actually, it provides `usleep()` (which sleeps in microseconds) and `nanosleep()` (which sleeps in nanoseconds). You may want `usleep()`, which should let you deal with easier numbers. 1 millisecond sleep (using each):

use strict;
use warnings;

use Time::HiRes qw(usleep nanosleep);

# 1 millisecond == 1000 microseconds
usleep(1000);
# 1 microsecond == 1000 nanoseconds
nanosleep(1000000);

If you don't want to (or can't) load a module to do this, you may also be able to use the built-in `select()` function:

# Sleep for 250 milliseconds
select(undef, undef, undef, 0.25);

Problem

How do I sleep for shorter than a second in Perl?

Original source