use strict; use warnings; use POE qw(Wheel::FollowTail Filter::Line); my $tmpfile = "/tmp/data$$"; my $i=1; POE::Session->create( inline_states => { _start => sub { $_[HEAP]{tailor} = POE::Wheel::FollowTail->new( Seek=>0, Filename => "$tmpfile", InputEvent => "got_log_line", Filter => POE::Filter::Line->new( #InputLiteral=>"\n+++", #InputRegexp=>"\n\\+\\+\\+", InputRegexp=>"\n[+*][+*][+*]\\s+", #InputRegexp=>"\n(\\*\\*\\*)|(\\+\\+\\+)\\s+", #InputRegexp=>"\n(\\+\\+\\+)|(\\*\\*\\*)\\s+", ), ); }, got_log_line => sub { print "Msg($i):\n$_[ARG0]\n"; $i++ } } ); open(DATA, ">$tmpfile") || die "Can't open $tmpfile"; print DATA " *** Message 1 Line 1 +++ Message 2 Line 1 Message 2 Line 2 *** Message 3 Line 1 Message 3 Line 2 Message 3 Line 3 +++ Message 4 Line 1 Message 4 Line 2 Message 4 Line 3 Message 4 Line 4 +++ Message 5 Line 1 Message 5 Line 2 Message 5 Line 3 Message 5 Line 4 *** Message 6 Line 1"; close(DATA); POE::Kernel->run(); exit;