use Sub::ScopeFinalizer qw( scope_finalizer ); { my $old_fh = select($fh); my $sentry = scope_finalizer { select($old_fh); }; ... }