Command::Runner - run external commands and Perl code refs
use Command::Runner; my $cmd = Command::Runner->new( command => ['ls', '-al'], timeout => 10, stdout => sub { warn "out: $_[0]\n" }, stderr => sub { warn "err: $_[0]\n" }, ); my $res = $cmd->run;
Command::Runner runs external commands and Perl code refs
A constructor, which takes:
an array of external commands, a string of external programs, or a Perl code ref. If an array of external commands is specified, it is automatically quoted on Windows.
timeout second. You can set float second.
if this is true, stderr redirects to stdout
by default, even if stdout/stderr is consumed, it is preserved for return value. You can disable this behavior by setting keep option false.
a code ref that will be called whenever stdout/stderr is available
set environment variables.
Command::Runner->new(..., env => \%env)->run
is roughly equivalent to
{ local %ENV = %env; Command::Runner->new(...)->run; }
set the current directory.
Command::Runner->new(..., cwd => $dir)->run
{ require File::pushd; my $guard = File::pushd::pushd($dir); Command::Runner->new(...)->run; }
Run command. It returns a hash reference, which contains:
I develop a CPAN client App::cpm, where I need to execute external commands and Perl code refs with:
While App::cpanminus has excellent APIs for such use, I still needed to tweak them in App::cpm.
So I ended up creating a seperate module, Command::Runner.
Shoichi Kaji <skaji@cpan.org>
Copyright 2017 Shoichi Kaji <skaji@cpan.org>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Command::Runner, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Command::Runner
CPAN shell
perl -MCPAN -e shell install Command::Runner
For more information on module installation, please visit the detailed CPAN module installation guide.