Thank you. That looks perfect for this and a couple of other things I've wanted in the past.

With regard to using PerlIO*. I often use I::C to prototype ideas that ultimately might end up being used or reused in stand alone C programs.

I::C is so useful because it allows me to try things out without having to build a working C front end first, (file handling, argument handling, error handling etc.), which Perl gives me, and does so much better anyway. Hence I often try to avoid using any XS/perlish stuff within the routines themselves.

In this case, the output I'm writing goes to a file that exists (is opened/written/closed) entirely within the C code, but it runs a long time and is quite hard to get right. Rather than having to wait until the code completes and then inspect the file, I wanted to direct the output to stderr so that I could send it to the file by way of tee, so that I could keep an eye on things and abort early if I could see they were going wrong.

That should have been as easy as just substituting stderr for the FILE* I've opened in the output calls, but then I re-encountered the old problem.

With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'

Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.

"Science is about questioning the status quo. Questioning authority".

In the absence of evidence, opinion is indistinguishable from prejudice.

When putting a smiley right before a closing parenthesis, do you:

Use two parentheses: (Like this: :) )
Use one parenthesis: (Like this: :)
Reverse direction of the smiley: (Like this: (: )
Use angle/square brackets instead of parentheses
Use C-style commenting to set the smiley off from the closing parenthesis
Make the smiley a dunce: (:>
I disapprove of emoticons
Other