Reputation: 29998
I'm using IPC::System::Simple:runx
to execute system commands and die on unexpected return values. The problem is that the commands output is printed to the shell.
UPDATE
3) How can I print this output iff the execution fails?
Upvotes: 2
Views: 411
Reputation: 2131
If a module does behave very nasty and prints directly to STDOUT you can always redirect STDOUT to something else. This sort of a hack but some modules require it.
# Save STDOUT for restore later
open(OLD_STDOUT, ">>&STDOUT");
open(STDOUT, ">/some/file/or/dev/null");
# call your module
# Restore STDOUT
open(STDOUT, ">>&OLD_STDOUT");
Upvotes: 0
Reputation: 10327
The capture() command? Or capturex().
Quoted from link:
Exception handling
In the case where the command returns an unexpected status, both run and capture will throw an exception, which if not caught will terminate your program with an error.
Capturing the exception is easy:
eval {
run("cat *.txt");
};
if ($@) {
print "Something went wrong - $@\n";
}
See the diagnostics section below for more details.
Upvotes: 2