Actually, no. I'm writing a module, and short of overloading CORE::exit
I don't have control over the exit. That's also why I don't want <DATA> to show up in error messages. Why would the user of my module care if I'm reading the module's DATA? They wouldn't.
On a side note, I'm not sure I understand your answer anyway. The problem isn't with exit, its with warn and die. Specifically, if you have an open filehandle then Perl mentions that when formating your error messages. That's one of the many good reasons to close filehandles when you are done with them, and to use IO::File which observes scope. (normal filehandles are global - although later versions of Perl allow you to scope them via my) My problem is that DATA is not a normal filehandle (as Ovid remembered above). I can't close it, because you can't open it. But once I've read from it, it shows up in error messages. So the question is, how do you keep it open for re-reading, without it showing up in error messages.