The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;

use Test::More tests => 1;

# Fake timer 
my $time = time;

use Timeout::Queue qw(queue_timeout handle_timeout get_timeout);

my @timeouts;
my $timeout;
my $timeout_id = 0;

queue_timeout(\@timeouts, time,
  timeout_id => ++$timeout_id,
  timeout => 1, # time out in 1 seconds.
  callme => sub {
      pass "I timed out!!\n";
  }
);

# Get the first timeout
$timeout = get_timeout(\@timeouts, $time);

# Fake sleep 1 sec
$time += 1;

foreach my $item (handle_timeout(\@timeouts, $time)) {
  $item->{callme}->();
}

# Get the next timeout 
$timeout = get_timeout(\@timeouts, $time);