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
In reply to Re: Do I need/want to close __DATA__?
by haukex
in thread Do I need/want to close __DATA__?
by bliako
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |