sub IO::Handle::DESTROY { my $deadbody = shift; not defined fileno $deadbody or close $deadbody or die "Cannot close $deadbody: $!"; } #### { local *IO::Handle::DESTROY = sub { ... }; { open my $fh, "..."; ... } # will trigger here }