|
NAMEPOE::Component::IRC::Plugin::FollowTail - A PoCo-IRC plugin to follow the tail of an ever-growing fileSYNOPSISuse POE qw(Component::IRC Component::IRC::Plugin::FollowTail); my $nickname = 'Flibble' . $$; my $ircname = 'Flibble the Sailor Bot'; my $ircserver = 'irc.blahblahblah.irc'; my $filename = '/some/such/file/here'; my @channels = ( '#Blah', '#Foo', '#Bar' ); my $irc = POE::Component::IRC->spawn( nick => $nickname, server => $ircserver, port => $port, ircname => $ircname, ) or die "Oh noooo! $!"; POE::Session->create( package_states => [ main => [ qw(_start irc_001 irc_tail_input irc_tail_error irc_tail_reset) ], ], ); $poe_kernel->run(); sub _start { $irc->plugin_add( 'FollowTail' => POE::Component::IRC::Plugin::FollowTail->new( filename => $filename, )); $irc->yield( register => 'all' ); $irc->yield( connect => { } ); return; } sub irc_001 { $irc->yield( join => $_ ) for @channels; return; } sub irc_tail_input { my ($kernel, $sender, $filename, $input) = @_[KERNEL, SENDER, ARG0, ARG1]; $kernel->post( $sender, 'privmsg', $_, "$filename: $input" ) for @channels; return; } sub irc_tail_error { my ($kernel, $sender, $filename, $errnum, $errstring) = @_[KERNEL, SENDER, ARG0 .. ARG2]; $kernel->post( $sender, 'privmsg', $_, "$filename: ERROR: $errnum $errstring" ) for @channels; $irc->plugin_del( 'FollowTail' ); return; } sub irc_tail_reset { my ($kernel, $sender, $filename) = @_[KERNEL, SENDER, ARG0]; $kernel->post( $sender, 'privmsg', $_, "$filename: RESET EVENT" ) for @channels; return; } DESCRIPTIONPOE::Component::IRC::Plugin::FollowTail is a POE::Component::IRC plugin that uses POE::Wheel::FollowTail to follow the end of an ever-growing file. It generates "irc_tail_" prefixed events for each new record that is appended to its file.METHODS"new"Takes two arguments:'filename', the name of the file to tail, mandatory; 'filter', a POE::Filter object to pass to POE::Wheel::FollowTail, optional; Returns a plugin object suitable for feeding to POE::Component::IRC's "plugin_add" method. OUTPUT EVENTSThe plugin generates the following additional POE::Component::IRC events:"irc_tail_input"Emitted for every complete record read. "ARG0" will be the filename, "ARG1" the record which was read."irc_tail_error"Emitted whenever an error occurs. "ARG0" will be the filename, "ARG1" and "ARG2" hold numeric and string values for $!, respectively."irc_tail_reset"Emitted every time a file is reset. "ARG0" will be the filename.AUTHORChris 'BinGOs' WilliamsSEE ALSOPOE::Component::IRCPOE::Wheel::FollowTail
Visit the GSP FreeBSD Man Page Interface. |