perl5 sort of already has an C<always>, in that DESTROY() methods are called on any blessed lexicals when the scope closes. Taking advantage of that for closing a file works if you hide your files in an object class or equivalent chicanery. Allowing user code into the list of things that perl does on shutting down a scope should be a breeze.