SYNOPSIS use IPC::System::Options qw(system backtick); # use exactly like system() system(...); # use exactly like backtick (qx, ``) my $res = backtick(...); # but it accepts an optional hash first argument to specify options system({...}, ...); # run without shell, even though there is only one argument system({shell=>0}, "ls"); system({shell=>0}, "ls -lR"); # will fail, as there is no 'ls -lR' binary # set LC_ALL/LANGUAGE/LANG environment variable system({lang=>"de_DE.UTF-8"}, "df"); # log using Log::Any, die on failure system({log=>1, die=>1}, "blah", ...); Set default options for all calls (prefix each option with dash): use IPC::System::Options 'system', 'backtick', -log=>1, -die=>1; DESCRIPTION FUNCTIONS system([ \%opts ], @args) Just like perl's system() except that it accepts an optional hash first argument to specify options. Currently known options: * shell => bool Can be set to 0 to always avoid invoking the shell. The default is to use the shell under certain conditions, like Perl's system(). * lang => str Temporarily set locale-related environment variables: LC_ALL (this is the highest precedence, even higher than the other LC_* variables including LC_MESSAGES), LANGUAGE (this is used in Linux, with precedence higher than LANG but lower than LC_*), and LANG. Of course you can set the environment variables manually (or use the env option), this option is just for convenience. * env => hashref Temporarily set environment variables. * log => bool If set to true, then will log invocation as well as return/result value. Will log using Log::Any at the trace level. * die => bool If set to true, will die on failure. backtick([ \%opts ], @args) Just like perl's backtick operator (qx()) except that it accepts an optional hash first argument to specify options. Known options: * lang => str See option documentation in system(). * env => hash See option documentation in system(). * log => bool See option documentation in system(). * die => bool See option documentation in system(). * max_log_output => int If set, will limit result length being logged. It's a good idea to set this (e.g. to 1024) if you expect some command to return large output.