Provided by: libpoe-component-irc-perl_6.90+dfsg-1_all bug

NAME

       POE::Component::IRC::Plugin::FollowTail - A PoCo-IRC plugin to follow the tail of an
       ever-growing file

SYNOPSIS

        use 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;
        }

DESCRIPTION

       POE::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 EVENTS

       The 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.

AUTHOR

       Chris 'BinGOs' Williams

SEE ALSO

       POE::Component::IRC

       POE::Wheel::FollowTail

perl v5.26.1                                2018-01-0POE::Component::IRC::Plugin::FollowTail(3pm)