in reply to Do I need/want to close __DATA__?
As per Special Literals:
The program should close DATA when it is done reading from it. (Leaving it open leaks filehandles if the module is reloaded for any reason, so it's a safer practice to close it.)
So yes, any module reading from its DATA should close it. BTW, it's not Geography::Countries::LatLong at fault here, it doesn't have any __DATA__ sections, it's its parent, Geography::Countries. A bug/patch could be filed with that module, although it appears unmaintained.
As for the general feature of appending the information to the error/warning messages, personally, I think it's a useful feature. I believe what it's using is the internal "last filehandle read", the same that eof and tell use when called without arguments, and that $. uses; see e.g. Filehandle, last accessed. Although not extra pretty, and maybe I'm missing an easier way to do this, this works:
use warnings; use strict; sub resetfh { eof do { local *HANDLE; *HANDLE } } my @x = <DATA>; resetfh; warn "test"; __DATA__ 1 2 3
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Do I need/want to close __DATA__?
by choroba (Cardinal) on Apr 13, 2020 at 15:08 UTC | |
by haukex (Archbishop) on Apr 13, 2020 at 17:17 UTC | |
by choroba (Cardinal) on Apr 13, 2020 at 17:57 UTC | |
by haukex (Archbishop) on Apr 13, 2020 at 18:22 UTC |