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.