Perl: redirecting STDERR to STDOUT
I had occasion that I needed to redirect all STDERR output (die statements) to STDOUT. A webapp I wrote only looks at STDOUT, so this code causes STDERR to merge with STDOUT.
open(STDERR, ">&STDOUT");
Alternately you can also do it by reassigning the raw file handles:
*STDERR = *STDOUT;
You can get fancy and redirect all output to a log file:
open(LOG,">/tmp/foo.log");
*STDERR = *LOG;
*STDOUT = *LOG;
Leave A Reply
- 1 Reply
Replies
July 19th 2011 - Beli
Thank you for the examples. I'd just add that the first alternative: open(STDERR, ">&STDOUT"); affects also the output of executed programs, e.g. with system(), while the second one: STDERR = STDOUT; affects only output generated by your script, not other processes executed from within. Best regards. Beli