Okay I stand corrected in that order matters. That said, I honestly can't remember ever seeing 2>&1 not coming at the end of the command line, probably because doing so seems to indicate that it won't be captured to STDOUT as one desires.
~/stuff > cat JGBtest.txt Just a starting point ~/stuff > perl foobar.pl 2>&1 >>JGBtest.txt Going to STDERR ~/stuff > cat JGBtest.txt Just a starting point Normal STDOUT ~/stuff > perl foobar.pl 2>&1 >>JGBtest.txt | grep STD Going to STDERR ~/stuff > perl foobar.pl 2>&1 | grep STD Going to STDERR Normal STDOUT ~/stuff >
With all of the foregoing comments by both you and me in mind, I think you're first comment implies that it must come first in order to be captured. But in the interest of being complete even if I'm wrong, I included the final tests that does actually demonstrate what is happening on the command line (though it is not intuitive.) Also, it is possible that setting $| = 1; might alter the output ordering.