use strict; use warnings; use POE; sub handler_start { my ($kernel, $heap, $session) = @_[KERNEL, HEAP, SESSION]; print "Session ",$session->ID," has started\n"; $heap->{count} = 0; $kernel->yield('increment') if $heap->{count} < 10; } sub handler_increment { my ($kernel, $heap, $session) = @_[KERNEL, HEAP, SESSION]; print "Session ",$session->ID," counted to ",++$heap->{count},".\n"; } sub handler_stop { my ($kernel, $heap, $session) = @_[KERNEL, HEAP, SESSION]; print "Session ",$session->ID," has stopped.\n"; } for (1..10) { POE::Session->create( inline_states => { _start => \&handler_start, increment => \&handler_increment, _stop => \&handler_stop, }, ); } POE::Kernel->run();