Summary of Process Operations

Table 14.1 summarizes the operations that you have for launching a process.

Summary of Subprocess Operations
Operation Standard Input Standard Output Standard Error Waited for?
system()
Inherited from program Inherited from program Inherited from program Yes
Backquoted string Inherited from program Captured as string value Inherited from program Yes
open() command as filehandle for output Connected to filehandle Inherited from program Inherited from program Only at time of close()
open() command as filehandle for input Inherited from program Connected to filehandle Inherited from program Only at time of close()
fork, exec, wait, waitpid Not implemented Not implemented Not implemented Not implemented

The simplest way to create a process is with the system function. Standard input, output, and error are unaffected (they're inherited from the Perl process). A backquoted string creates a process, capturing the standard output of the process as a string value for the Perl program. Standard input and standard error are unaffected. Both methods require that the process finish before any more code is executed.

A simple way to get an asynchronous process (one that allows the Perl program to continue before the process is complete) is to open a command as a filehandle, creating a pipe for the command's standard input or standard output. A command opened as a filehandle for reading inherits the standard input and standard error from the Perl program; a command opened as a filehandle for writing inherits the standard output and standard error from the Perl program.