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
Beli 2011-07-19 01:55am - public@beli.sk - Logged IP: 195.168.38.64
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
All content licensed under the Creative Commons License