use POE; $DELAY = 0.5; # every half a second sub do_something { my $kernel = $_[KERNEL]; print "Hello boy..\n"; $kernel->delay('wake_up!', $DELAY); } POE::Session->new( _start => sub { my $kernel = $_[KERNEL]; $kernel->delay('wake_up!', $DELAY); print "Session is started..\n"; }, _stop => sub { print "Session is stopped.\n"; }, 'wake_up!' => \&do_something, ); $poe_kernel->run;