I read again PerlIO
. My mistake was certainly to regard :unix and :crlf as two alternative
I/O layers, one doing the lineending translation in the Unix style (i.e. no translation necessary), and the other one in the Windows style. This is clearly wrong: :crlf
is to be seen on top of </c>:unix</c>, the latter being the most elementary stlye.
Indeed, just omitting binmode works; I can read both kinds of files on Windows.
Now another, related question comes to my mind. How about creating files? When I want to create on Windows a file, which has Unix line endings, should I then
- Pop the :crlf layer, or
- Explicitly set the :raw layer, or
- Just apply binmode without any layer
, since just setting the layer to :unix shouldn't work either, for the same reason that it was nonsense when trying to read
an Unix file on Windows. But which of these variants are reliably working, i.e. without nasty side effects which maybe come up much later? I guess all three of them are correct, but I'm not sure, and anyway, which one would you consider the preferable one?
Ronald Fischer <firstname.lastname@example.org>