in reply to
Re: capturing STDOUT
in thread capturing STDOUT
This is a good solution in a general context.
However, one possible problem with this in the context of Spreadsheet::WriteExcel is that on Windows you have to binmode() the filehandle before passing it to the constructor. This means that STDOUT would remain in binary mode after the untie.