Updated: perl-5.8.0-2

Rolf Campbell rcampbell@tropicnetworks.com
Thu Apr 3 02:37:00 GMT 2003


Rolf Campbell wrote:
> Gerrit P. Haase wrote:
> 
>> Hallo Rolf,
>> Am Dienstag, 1. April 2003 um 18:13 schriebst du:
>>
>>> Gerrit P. Haase wrote:
>>>
>>>> Rolf schrieb:
>>>>
>>>>> So, is this a cygwin perl problem?  Or has the stock perl decided
>>>>> to only work with magic ENV variables?
>>>>
>>>>
>>>> I don't see the problem in the latest Perl (5.9.0) and I'm trying to
>>>> figure out how it can be fixed, in the meantime, please try to use the
>>>> magic PERLIO=perlio setting for your environment.
>>>> Gerrit
>>>
>>> Ok, using PERLIO=perlio, but I'm still having a problem (which worked 
>>> in the previous version of Perl).
> 
> 
>>> TEST.PL:
>>> 1:#!/bin/perl
>>> 2:$/ = "\r\n";
>>> 3:
>>> 4:open( LOG, "<in" ) ||
>>> 5:  die "Could not open log.\n";
>>> 6:binmode LOG, ":crlf";
>>> 7:
>>> 8:$in = <LOG>;
>>> 9:print $in;
>>
>>
>>
>>> in (od -c in):
>>> 0000000   a   b   c  \r  \n   d   e   f  \r  \n
>>> 0000012
>>
>>
>>
>>> This is on a BINMODE mount.  This script outputs "0000000   a   b   c 
>>> \n   d   e   f  \n".  If I go back to prev Perl, OR remove line#2 OR 
>>> remove line#6, then it outputs "0000000   a   b   c  \n"
>>
>>
>>
>> 1. No PERLIO setting:
>>
>> $ od -c in
>> 0000000   a   b   c  \r  \n   a   b   c  \r  \n
>> 0000012
>>
>> $ ./crlf.pl 2>&1 | tee log.in
>> abc
>> abc
>>
>> $ od -c log.in
>> 0000000   a   b   c  \r  \n   a   b   c  \r  \n
>> 0000012
>>
>> 2. PERLIO=perlio:
>>
>> $ export PERLIO=perlio
>>
>> $ ./crlf.pl 2>&1 | tee log.in
>> abc
>> abc
>>
>> $ od -c log.in
>> 0000000   a   b   c  \n   a   b   c  \n
>> 0000010
>>
>>
>> 3. PERLIO=raw:
>>
>> $ export PERLIO=raw
>>
>> $ ./crlf.pl 2>&1 | tee log.in
>> abc
>> abc
>>
>> $ od -c log.in
>> 0000000   a   b   c  \n   a   b   c  \n
>> 0000010
>>
>> 4. PERLIO=stdio:
>>
>> $ export PERLIO=stdio
>>
>> $ ./crlf.pl 2>&1 | tee log.in
>> abc
>> abc
>>
>> $ od -c log.in
>> 0000000   a   b   c  \n   a   b   c  \n
>> 0000010
>>
>> 5. PERLIO=:
>>
>> $ export PERLIO=
>>
>> $ ./crlf.pl 2>&1 | tee log.in
>> abc
>> abc
>>
>> $ od -c log.in
>> 0000000   a   b   c  \r  \n   a   b   c  \r  \n
>> 0000012
>>
>>
>> Gerrit
> 
> 
> Ok, so you get the same results as me.  They are both wrong.  The script 
> should only print the first line.
> 
> I just tried something, I made a file like this: "0000000   a   b   c 
> \r  \r  \n   d   e   f  \r  \r  \n".  Then the perl script shows only 
> the first line.
> 
> In 5.6: setting 'binmode LOG, ":crlf";' would set the line-separator to 
> "\r\n".
> In 5.8: setting 'binmode LOG, ":crlf";' sets the line-separator to "\r" 
> + $/.  So, given that I've already set the line-separator to "\r\n" it 
> ends up as "\r\r\n" for that file.
> 
> Does anybody have access to a U/Linux machine with perl 5.8 on it?  Can 
> they run that test script on it?  I'd like to know if this is only a 
> problem with cygwin-perl or with perl in general.

So, I've recieved confirmation that this problem is only with cygwin 
perl, and not with GNU/Linux perl (5.8).



--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list