system LIST system PROGRAM LIST Does exactly the same thing as "exec LIST", except that + a fork is done first, and the parent process waits for the chi +ld pro- cess to complete. Note that argument processing varies + depend- ing on the number of arguments. If there is more than +one argument in LIST, or if LIST is an array with more than + one value, starts the program given by the first element of + the list with arguments given by the rest of the list. If +there is only one scalar argument, the argument is checked for s +hell metacharacters, and if there are any, the entire argume +nt is passed to the system’s command shell for parsing (this +is "/bin/sh -c" on Unix platforms, but varies on other pla +tforms). If there are no shell metacharacters in the argument, i +t is split into words and passed directly to "execvp", which + is more efficient. Beginning with v5.6.0, Perl will attempt to flush all f +iles opened for output before any operation that may do a fo +rk, but this may not be supported on some platforms (see perlpo +rt). To be safe, you may need to set $│ ($AUTOFLUSH in En +glish) or call the "autoflush()" method of "IO::Handle" on any open ha +ndles. The return value is the exit status of the program as r +eturned by the "wait" call. To get the actual exit value shift + right by eight (see below). See also "exec". This is not wh +at you want to use to capture the output from a command, for t +hat you should use merely backticks or "qx//", as described in "‘STRING‘" in perlop. Return value of -1 indicates a f +ailure to start the program (inspect $! for the reason). Like "exec", "system" allows you to lie to a program ab +out its name if you use the "system PROGRAM LIST" syntax. Agai +n, see "exec". Because "system" and backticks block "SIGINT" and "SIGQ +UIT", killing the program they’re running doesn’t actually in +terrupt your program. @args = ("command", "arg1", "arg2"); system(@args) == 0 or die "system @args failed: $?" You can check all the failure possibilities by inspecti +ng $? like this: $exit_value = $? >> 8; $signal_num = $? & 127; $dumped_core = $? & 128; or more portably by using the W*() calls of the POSIX e +xten- sion; see perlport for more information. When the arguments get executed via the system shell, r +esults and return codes will be subject to its quirks and capa +bilities. See "‘STRING‘" in perlop and "exec" for details.
In reply to Re: Executing another Script
by Anonymous Monk
in thread Executing another Script
by Avitar
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |