1. ホーム
  2. perl

[解決済み] Perlでミリ秒単位でスリープさせるには?

2023-07-19 23:10:27

質問

Perl で 1 秒未満のスリープを行うにはどうすればよいですか?

どのように解決するのですか?

のPerldocページより スリープ :

1秒より細かい粒度の遅延については 時間::ハイレゾ モジュール (CPAN から、そして Perl 5.8 からは標準ディストリビューションの一部) は usleep() を提供します。

実は、このモジュールは usleep() (マイクロ秒単位でスリープする) と nanosleep() (ナノ秒単位でスリープする)。また usleep() の方が簡単でしょう。1ミリ秒のスリープ(それぞれを使用)。

use strict;
use warnings;

use Time::HiRes qw(usleep nanosleep);

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

これを行うためにモジュールをロードしたくない (あるいはできない) 場合は、組み込みの select() 関数を使うこともできます。

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