Depending on the structure of your code, you could use somehting as simple as localizing STDOUT.
print "Msg to original STDOUT\n";
{
local *STDOUT;
open(STDOUT, ">my_file") ;
select STDOUT; $| = 1;
print "msg to Redirected STDOUT\n";
}
print "Msg to original STDOUT again\n";
Note that the localized copy of STDOUT will be used by any subs called from within the block (after the local), unlike with "my", but from your post, I think that's what you want.
(Localizing STDOUT when you change it is good practice in any case.)