They're all different, and the docs explain how they're different. Backticks capture and return output;
system
returns an exit status, and
exec
never returns at all if it's successful.
exec
executes a command and
never returns. It's like a
return
statement in a function.
If the command is not found execute returns false. It never returns true, because if the command is found it never returns at all. There is also no point in returning
STDOUT
,
STDERR
or exit status of the command. You can find documentation about it in
perlfunc
, because it is a function.
system
executes a command and your perl script is continued after the command has finished.
The return value is the exit status of the command. You can find documentation about it in
perlfunc
.
System fork the current process into two processes (parent and child) and replace the child process
with an exec call to the external program while the parent process waits for the child process to complete. This is what the system
function** does. It is implemented in terms of a fork***, an exec, and a waitpid****.
backticks
like
system
executes a command and your perl script is continued after the command has finished.
In contrary to
system
the return value is
STDOUT
of the command.
qx//
is equivalent to backticks. You can find documentation about it in
perlop
, because unlike
system
and
exec
it is an operator.
No comments:
Post a Comment