Adding a unix layer makes no sense.I guess I was misusing the "layer" feature. Maybe you can enlighten me here:
My reasoning about using the :unix layer was the following: By default (on a Windows host), Perl translates CRLF to \n when reading a file. In my case, however, the text file was created on a Unix platform with LF line endings. Hence, I thought that using the :unix layer, would have the effect of "recognizing" the proper endings. In particular, if the file to be read would contain by chance a CR right in front of a LF, this CR should also be returned to my application (i.e. CR should be treated just like any other character, but LF should be recognized as line delimiter).
I suspect both the existing unix layer and the one you add are trying to close the handle. Of course, only one will succeed.
This would not explain my problem, because if at least one of the 'close' would succeed, the handle would be closed afterwards. However, in my case the problem was the (Windows-)Handle was still *open* afterwards. Maybe it works the other way around: When switching to :unix layer, an additional (Windows-)handle was created, and the close operation closed only one, leaving the other open?
The best solution is probably the following, though....
If I understand right, using just binmode without argument is equivalent to specifying the :raw layer. This works indeed, and I think this is the solution I am going to use.
In reply to Re^2: Closing a filehandle in ":unix" layer doesn't work on Win32
by rovf
in thread Closing a filehandle in ":unix" layer doesn't work on Win32
by rovf
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |