##
open TEMP, '>', \$buf;
my $old_select = select(TEMP);
...
select($old_select);
####
{
my $old_select = select();
my $handle = on_release { select($old_select); };
open local *STDOUT, '>', \$buf;
select(STDOUT);
...
}