Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses

Re^3: capture STDOUT without printing to screen

by hmerrill (Friar)
on Dec 07, 2004 at 12:47 UTC ( [id://412893] : note . print w/replies, xml ) Need Help??

in reply to Re^2: capture STDOUT without printing to screen
in thread capture STDOUT without printing to screen

As 'jfroebe' said below, xpdformat is probably also writing to STDERR (which is *NOT* captured by backticks). Read about STDERR by doing
perldoc -q STDERR
at a command prompt. The perldoc '-q' says to search the perldoc documentation for string "STDERR". Here's a snippet from that:
Found in C:\Perl\lib\pod\perlfaq8.pod How can I capture STDERR from an external command? There are three basic ways of running external commands: system $cmd; # using system() $output = `$cmd`; # using backticks (``) open (PIPE, "cmd |"); # using open() With system(), both STDOUT and STDERR will go the same place as th +e script's STDOUT and STDERR, unless the system() command redirects +them. Backticks and open() read only the STDOUT of your command. Here's another snippet: ----------------------- You can also use file-descriptor redirection to make STDERR a dupl +icate of STDOUT: $output = `$cmd 2>&1`; open (PIPE, "cmd 2>&1 |"); And another snippet: -------------------- ...To capture a command's STDERR and STDOUT together: $output = `cmd 2>&1`; # either with backticks $pid = open(PH, "cmd 2>&1 |"); # or with an open pipe while (<PH>) { } # plus a read
Anyway, hope that helps.