Best practices: avoid the shell, use automatic error handling –
require IPC::System::Simple; use autodie qw(:all); system qw(command --arg1=arg1 --arg2=arg2 -arg3 -arg4);
use IPC::System::Simple qw(runx); runx , qw(command --arg1=arg1 --arg2=arg2 -arg3 -arg4); # ↑ list of allowed EXIT_VALs, see documentation
Edit: a rant follows.
eugene y’s answer includes a link to the documentation to system. There we can see a homungous piece of code that needs to be included everytime to do
system properly. eugene y’s answer shows but a part of it.
Whenever we are in such a situation, we bundle up the repeated code in a module. I draw parallels to proper no-frills exception handling with
system done right did not see this quick adoption from the community. It seems it needs to be repeated more often.
IPC::System::Simple! Save yourself the tedium, be assured that you use tested code.