http://www.perlmonks.org?node_id=594587


in reply to Re: How do I make the garbage collector throw an exception when it fails to auto-close a filehandle?
in thread How do I make the garbage collector throw an exception when it fails to auto-close a filehandle?

Thanks for that link! Some interesting stuff in your thread which wasn’t discussed here in mine.

Seems like clobbering IO::Handle::DESTROY is the only way to do this, but that it’s at least reliable. Maybe I should put IO::Handle::CheckedAutoclose on the CPAN or something. :-)

Makeshifts last the longest.

  • Comment on Re^2: How do I make the garbage collector throw an exception when it fails to auto-close a filehandle?

Replies are listed 'Best First'.
Re^3: How do I make the garbage collector throw an exception when it fails to auto-close a filehandle?
by gaal (Parson) on Jan 14, 2007 at 05:52 UTC
    I don't like the extra scope and the fact that it's local at best. If you do put it on CPAN, make a note to say it isn't thread safe.

      I’d want it global. Otherwise I’d subclass IO::Handle and instantiate that class instead; that works just as well and won’t conflict with anything else.

      How does overriding DESTROY break thread safety?

      Makeshifts last the longest.

        If you attempted to limit the effect of the change to that one function (and those it calls) using local *IO::Handle::DESTROY = sub { ... };, your code wouldn't be thread-safe.