use strict; use warnings; use Data::Dumper; use POE; # This should be added to the docs... use POE::Component::RemoteTail; my ( $host, $path, $user ) = (qw(myhost.domain.com /home/mylogin/.profile mylogin)); my $alias = 'Remote_Tail'; # spawn component my $tailer = POE::Component::RemoteTail->spawn( alias=>$alias ); # create job my $job = $tailer->job( host=>$host, path=>$path, user=>$user, ); # prepare the postback subroutine at main POE session POE::Session->create( inline_states=>{ _start=>sub { my ( $kernel, $session ) = @_[ KERNEL, SESSION ]; # create postback my $postback = $session->postback("MyPostback"); # post to execute $kernel->post( $alias, "start_tail"=>{ job=>$job, postback=>$postback } ); }, # return to here MyPostback=>sub { my ( $kernel, $session, $data ) = @_[ KERNEL, SESSION, ARG1 ]; print STDERR "DATA DUMP:\n", Dumper($data), "\n"; }, }, ); POE::Kernel->run(); #### use strict; use warnings; use POE; use POE::Component::Remotetail; my ( $host, $path, $user ) = (qw(myhost.domain.com /home/mylogin/.profile mylogin)); my $tailer = POE::Component::RemoteTail->spawn(); my $job = $tailer->job( host => $host, path => $path, user => $user, process_class => "POE::Component::RemoteTail::CustomEngine::NetSSHPerl" ); POE::Session->create( inline_states => { _start => sub { my $kernel = $_[KERNEL]; $kernel->post($tailer->session_id(), "start_tail" => {job => $job}); $kernel->delay_add("stop_job", 100); }, stop_job => sub { my $kernel = $_[KERNEL]; $kernel->post($tailer->session_id(), "stop_tail" => {job => $job}); } } ); POE::Kernel->run();