in reply to Redirect STDOUT to a $variable

It's not abundantly clear what is wanted although taking your first statement in isolation, I would deduce (tentatively!) that (on *NIX) you'd want something like:
prog.pl | tee trapit.txt
and then postprocess what landed in the siphoned-off text file.

On Windows there is no tee, so you'd have to overload the print function with your own routine to print both to STDOUT and somewhere else.

Update: BUT if you can live with the output being completely redirected rather than just copied then...

prog.pl > trapit.txt
works on Windows and *NIX
__________________________________________________________________________________

^M Free your mind!