The `open` pragma allows you to set default values for two-argument calls to
open and some other operators for a lexical scope, for example file level.
Where you need something else you can call binmode or three-argument open or
use the `open` pragma in a narrow lexical scope.
Supposed you have (a) a mixture of text and binary data to read and write, (b)
a requirement to produce all text output as Unicode/UTF-8, (c) the usual
mixture of hundreds of *.pl and *.pm forming an application or convention
domain, and (d) only medium programmer awareness of the text/byte problem, what
do you think is the best policy to set?
Of course, educate people on what to use and what not to use.
But apart from that, would you:
use open qw/:utf :std/; # as a default
binmode $fh; # where required
binmode, open, use open ':encoding(xy)'; # where required
Would you do that:
* in every file
* only in *.pl
* only where IO happens
* only in narrow lexical scopes
* no convention
The best would probably be to restrict IO to a certain set of files, and leave
the rest pure (with text for text and binary for binary), but unfortunately
that's not immediately possible.
Thanks for any advice you might have to share.
--
Michael.Ludwig (#) XING.com