in reply to Re^6: STDERR going to string
in thread STDERR going to string

Am I missing something?

$ perl -le " print for map { fileno $_ } \*STDIN, \*STDOUT, \*STDERR +" 0 1 2

There is nothing you can do to change the fileno of STDIN/STDOUT/STDERR on a c-level on win32, they're always 0 1 2, so any c code printing on STDERR is printing on 2, always

To capture STDERR you have to launch a process, or

Patch XS module to use perl functions for printing to stderr (perlclib), so that when you redirect STDERR/STDOUT (like using IO::NestedCapture), it notices

Replies are listed 'Best First'.
Re^8: STDERR going to string
by philkime (Beadle) on Oct 11, 2011 at 13:19 UTC
    Ok, thanks. I looked into patching but the STDERR stuff comes from a library which the XS uses, not the XS itself. To perlIO that would probably be too tricky (for me, anyway). I wonder if I could get round it with a simple fork() around the sub calls ...