NAME

Mojo::Run - asynchronous external command execution for Mojo

VERSION

version 0.3

SYNOPSIS

        use Mojo::Run;
        use Mojo::Log;

        my $run = Mojo::Run->new;
        $run->max_forks(10);
        $run->log(Mojo::Log->new(
            level => 'error',
            path  => 'log/mojo_run.log',
        ));

        $run->spawn(
            cmd => sub {
                my $pid   = shift;
                my $param = shift; # {a => 1, b => 2}
                
                my $data = {};
                ... do something
                return $data;
            },
            param => {a => 1, b => 2},
            exec_timeout => 120, # sec
            stdout_cb => sub {
                my ($pid, $chunk) = @_;
            },
            stderr_cb => sub {
                my ($pid, $chunk) = @_;
            },
            exit_cb => sub {
                my $pid = shift;
                my $res = shift;
                warn $res->{result}->[0];
            },
        );
        $run->spawn(
            cmd => 'ps aux',
            exit_cb => sub {
                my $pid = shift;
                my $res = shift;
            },
        );
        $run->spawn(
            cmd => ['perl', '-v'],
            exit_cb => sub {
                my $pid = shift;
                my $res = shift;
            },
        );

        $run->start;

Result

Result in exit_cb is a HASH with following keys:

cmd
param
exit_status
exit_signal
exit_core
stdout
stderr
result
time_started
time_stopped
time_duration_exec
time_duration_total

SOURCE REPOSITORY

https://github.com/likhatskiy/Mojo-Run

AUTHOR

Alexey Likhatskiy, <likhatskiy@gmail.com>

LICENSE AND COPYRIGHT

Copyright (C) 2012-2013 "Alexey Likhatskiy"

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.