Perl: Calling a perl script from another
perl
Solution
If you wan't to do error checking, backticks may be a wrong approach. You probably want to use the `system` function. See the documentation for all the details of error handling, examples included.
Perl has a number of possibilites to execute other scripts / commands:
- backticks / `qx{}` When you want to read all the output at once after the program has terminated
- `exec` When you wan't to continue your process as another program — never returns if succesfull
- `system` When you are only interested in the success or failure of the command
- `open` When you want to pipe information to or from the command
- `do` and `require` Execute another Perl script here. Similar to C's `#include`
- There are modules to do a three-way `open` so that you have access to `STDIN`, `STDOUT` and `STDERR` of the program you executed. See the apropriate parts of perlipc for advanced information.
And always use the multi-argument forms of these calls to avoid shell escaping (can be annoying and very insecure).
Problem
I have a perl script which calls another script. I am calling it using backticks and passing argument to that script and it works fine. ``` `CQPerl call_script.pl $agr1 $agr2 $arg3`; ``` But please suggest if there is another better way to do so. How can I check if the script errored out because of the calling script or the script that was called. How do I do that check from the calling script itself?