use POE qw(Wheel::ReadWrite); my $S2 = POE::Session->create( inline_states => { _start => sub { $_[HEAP]->{reader} = POE::Wheel::ReadWrite->new( Handle => \*STDIN, InputEvent => 'got_input', ); }, got_input => \&got_input, bang => \&bang, } ); sub got_input { print $_[ARG0], "\n"; $poe_kernel->yield('bang', $_[ARG0]); } sub bang { print "Bang\n"; } $poe_kernel->run(); #### This is line number 1 This is line number 2 This is line number 3 This is line number 4 This is line number 5 Bang Bang Bang Bang Bang #### This is line number 1 Bang This is line number 2 Bang This is line number 3 Bang This is line number 4 Bang This is line number 5 Bang