http://www.perlmonks.org?node_id=843512


in reply to system and backticks

For those that learn by example:

my $cmd = 'echo "Hello World" && exit 2'; my $sys_result = system($cmd); print "system() returned `$sys_result'; \$? = $?\n"; my $qx_result = `$cmd`; print "qx// returned `$qx_result'; \$? = $?\n";

Output:

Hello World System returned `512'; $? = 512 qx// returned `Hello World '; $? = 512

In a nutshell, with system, the command's output will not be captured (note how "Hello World\n" goes to the terminal), and you get the exit status as the return value. With backticks, the command's stdout is captured, and you get that output as your return value. In both cases, the child error is available with $?.

If you need to capture standard error, you will need to redirect it to standard output by appending 2>&1 to your command, or perhaps use the completely different IPC::Open3.

Please review How do I post a question effectively? and feel free to ask a more specific question if none of these replies are telling you what you need to know.