This is the mail archive of the 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]

RE: Cygwin 1.3.2-1 Problems with CR/LF in Perl

So binmode(F1); or binmode(F2); didn't fix the behavior,
even on textmode mount?

Just curious.  I know it's not a real fix, but is a
potential work-around.  I suppose I could go try it
for myself.

The reason I mention it is that perldoc perlfunc says:

   Arranges for the file to be read or written in 
``binary'' mode in operating systems that distinguish 
between binary and text files. Files that are not in 
binary mode have CR LF sequences translated to LF on 
input and LF translated to CR LF on output. Binmode 
has no effect under many sytems, but in MS-DOS and 
similarly archaic systems, it may be imperative--otherwise 
your MS-DOS-damaged C library may mangle your file. The 
key distinction between systems that need binmode() 
and those that don't is their text file formats. 
Systems like Unix, MacOS, and Plan9 that delimit lines 
with a single character, and that encode that character 
in C as "\n", do not need binmode(). The rest may need 
it. If FILEHANDLE is an expression, the value is taken 
as the name of the filehandle. 

If the system does care about it, using it when you 
shouldn't is just as perilous as failing to use it 
when you should. Fortunately for most of us, 
you can't go wrong using binmode() on systems 
that don't care about it, though.


-----Original Message-----
From: Gerrit P. Haase []
Sent: Wednesday, August 22, 2001 10:29 AM
Subject: Re: Cygwin 1.3.2-1 Problems with CR/LF in Perl

> Charles Wilson schrieb am 2001-08-22 11:33:

> Go to the cygwin-apps mailing list archives and look at the last few 
> days.  Hopefully there is a new perl coming soon that addresses your 
> problems; it should be available as a test version in the next few days. 
>   Once it is, PLEASE test it, Gavin.  None of "us" use text mounts...
> --Chuck

No, unfortunately not, there are no changes to that issue.
I just tested the little example below, if used on a textmount,
there are \r's added to every line, so after the script
runs one time, a textfile is converted from \n to \n\r and everytime
it runs, one more \r is added.
It seems at this state, perl does the right job only on binmode mounts.

> Walker, Gavin (CMIS, ANU - Acton) wrote:
> > Hi,
> >    I've been trying to write a perl script to edit a text file.  The cut
> > down version of it is a little further down.  It's pretty simple, read a
> > file in and dump it out.  My problem is that successive runs creates a
> > string of CR on each
> > line.  Every time I run it another CR is added.  To get rid of them I
have to
> > use chomp, then chop and append my own \n.  Perl appears to be reading
> > CR/LF characters separately and then out as CR/CR/LF.  This is supposed
> > work on unix as well so I can't go chopping unnecessarily.  Running the
> > program under DOS (probably using windows' perl) doesn't cause any
> > Perl version is 5.6.1 for cygwin.  On installation I told cygwin to use
> > text format (cvs handles the dos/unix interchange).
> > 
> > Gavin Walker
> > Canberra, Australia
> > 
> > #!perl -w
> > use strict;
> > 
> > rename("file2","file1");
> > open(F1,"file1");
> > open(F2,">file2");
> > while(<F1>) {
> >     # have to use chomp; chop; print F2 $_ . "\n"; to get it to work
> >     print F2;
> > }
> > close(F1);
> > close(F2);


Unsubscribe info:
Bug reporting:

Unsubscribe info:
Bug reporting:

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