This is the mail archive of the cygwin@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Updated: perl-5.8.0-2


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.



--
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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]