my ($errors, $output); sub foo { print STDERR "Something to worry about\n"; } { open local(*STDERR), '>', \$errors; foo(); } warn "STDERR ought to be restored now"; $errors =~ s/Something/Nothing/; print $errors;