in reply to Intercepting TAP output

I'd look at TAP::Parser first. Rather than rewire the original test program, just open a pipe from it and read its natural TAP output. Feed that to the parser and present the results however you like.