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


in reply to Re^4: capturing stderr of echo piped to a file
in thread capturing stderr of echo piped to a file

You didn't run the test with reversed redirection, so the above doesn't actually show anything new. Here's what I get with your code, including also a reversed order test:

~> perl foobar.pl Normal STDOUT Going to STDERR ~> echo 'Just a starting point > > ' >JGBtest.txt ~> cat JGBtest.txt Just a starting point > ~> perl foobar.pl >>JGBtest.txt 2>&1 ~> cat JGBtest.txt Just a starting point > Going to STDERR Normal STDOUT ~> perl foobar.pl 2>&1 >>JGBtest.txt Going to STDERR ~> cat foobar.pl #!/usr/bin/perl use warnings; use strict; print "Normal STDOUT\n"; warn "Going to STDERR\n"; exit; __END__ ~>

Which again shows that the redirection order does matter, and in the 2>&1 >>file case, STDERR goes to the output, not the file.

Update: And just to illustrate it in one more way...

~> perl foobar.pl >>JGBtest.txt 2>&1 & [1] 22571 ~> ll /proc/22571/fd total 0 lrwx------ 1 user group 64 2014-10-29 16:31 0 -> /dev/pts/11 l-wx------ 1 user group 64 2014-10-29 16:31 1 -> /home/user/JGBtest.tx +t l-wx------ 1 user group 64 2014-10-29 16:31 2 -> /home/user/JGBtest.tx +t ~> perl foobar.pl 2>&1 >>JGBtest.txt & [2] 22578 ~> ll /proc/22578/fd total 0 lrwx------ 1 user group 64 2014-10-29 16:32 0 -> /dev/pts/11 l-wx------ 1 user group 64 2014-10-29 16:32 1 -> /home/user/JGBtest.tx +t lrwx------ 1 user group 64 2014-10-29 16:32 2 -> /dev/pts/11 ~> cat foobar.pl #!/usr/bin/perl sleep(100);