MojoX-Run

SYNOPSIS

# create executor object
# NOTE: new *ALWAYS* returns singleton object!
my $executor = MojoX::Run->new()

# simple usage
my $pid = $executor->spawn(
       cmd => "ping -W 2 -c 5 host.example.org",
       exit_cb => sub {
               my ($pid, $res) = @_;
               print "Ping finished with exit status $res->{exit_val}.\n";
               print "\tSTDOUT:\n$res->{stdout}\n";
               print "\tSTDERR:\n$res->{stderr}\n";
       }
);
# check for injuries
unless ($pid) {
       print "Command startup failed: ", $executor->error(), "\n";
}

# more complex example...
my $pid2 = $executor->spawn(
       cmd => 'ping host.example.org',
       stdin_cb => sub {
               my ($pid, $chunk) = @_;
               print "STDOUT $pid: '$chunk'\n"
       },
       # ignore stderr
       stderr_cb => sub {},
       exit_cb => sub {
               my ($pid, $res) = @_;
               print "Process $res->{cmd} [pid: $pid] finished after $res->{time_duration_exec} second(s).\n";
               print "Exit status: $res->{exit_status}";
               print " by signal $res->{exit_signal}" if ($res->{exit_signal});
               print "with coredump " if ($res->{exit_core});
               print "\n";
       }
);

# even fancier usage: spawn coderef
my $pid3 = $executor->spawn(
       cmd => sub {
               for (my $i = 0; $i < 10; $i++) {
                       if (rand() > 0.5) {
                               print STDERR rand(), "\n"
                       } else {
                               print rand(), "\n";
                       }
                       sleep int(rand(10));
               }
               exit (rand() > 0.5) ? 0 : 1;
       },
       exit_cb => {
               print "Sub exited with $res->{exit_status}, STDOUT: $res->{stdout}\n";
       },
);

See perldoc MojoX::Run for complete instructions.

INSTALLATION

To install this module, run the following commands:

       perl Makefile.PL
       make
       make test
       make install

SUPPORT AND DOCUMENTATION

After installing, you can find documentation for this module with the
perldoc command.

   perldoc MojoX::Run

LICENSE AND COPYRIGHT

Copyright (C) 2010 "Brane F. Gracnar"

This program is free software; you can redistribute it and/or modify it
under the terms of either: the GNU General Public License as published
by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.