The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w

use lib '../blib/lib';
use FileHandle;
use POE qw(Filter::Stackable Filter::ParseWords Filter::Line Wheel::ReadWrite);

POE::Session->create(
	inline_states => { _start => \&start_test,
			   _stop  => \&stop_test,
			   f_input => \&file_input,
			   f_error => \&file_error,
	},
);

$poe_kernel->run();
exit 0;

sub start_test {
  my ($kernel,$heap) = @_[KERNEL,HEAP];

  $heap->{filter} = POE::Filter::Stackable->new();

  $heap->{filter}->push( POE::Filter::Line->new(),
			 POE::Filter::ParseWords->new(),
  );
  my $fh = new FileHandle "< test.txt";

  $heap->{wheel} = POE::Wheel::ReadWrite->new(
	Handle => $fh,
	InputEvent => 'f_input',
	ErrorEvent => 'f_error',
	Filter => $heap->{filter},
  );
}

sub stop_test {
  my ($kernel,$heap) = @_[KERNEL,HEAP];
  delete $heap->{wheel};
  return;
}

sub file_error {
  my ($kernel,$heap) = @_[KERNEL,HEAP];
  delete $heap->{wheel};
  return;
}

sub file_input {
  my ($kernel,$heap,$input) = @_[KERNEL,HEAP,ARG0];
  print "$_\n" for @$input;
  return;
}