in reply to IO::Tee not behaving correctly
The first is that something might be doing a select or missing up the tie. I would try in the middle of your script calling tied to see if the tie has survived, and select to see if the output is going where you think.
The second is whether you are producing output at the C level. For instance if you call system or fork, the child processes will talk directly to STDOUT without any chance for Perl's IO layer to capture it and notice the tie.
In either case, the cookbook has an alternate recipe that might interest you where you fork and filter STDOUT after the fact. This is more heavyweight, but is a less fragile approach.