in reply to Output redirection -- hard

"Ambiguous output redirect" is the message that csh emits when you say "cmd >/tmp/foo 2>&1". Somehow your Perl is using /bin/csh (instead of /bin/sh) to run your program.

In system("cross_match -arguments 2>&1"), what probably happens is that you're running "cross_match -arguments 2", redirecting standard output and standard error to a file named "2"; this is /bin/csh behaviour.

Does the exact code that you posted exhibit this behaviour?

Please try running "perl -e 'print system(q(ps x | grep $$))'" and posting the result; this will tell us definitely which shell is running...