use constant MIN_REFRESH => 0.02; # 20 ms while(1) { my $start = Time::HiRes::time; $taxis->taxis() if $running; DoOneEvent() until Time::HiRes::time-$start > MIN_REFRESH; }