Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT sources DOT redhat DOT com Delivered-To: mailing list cygwin AT sources DOT redhat DOT com From: "Gerrit P. Haase" Organization: convey Information Systems GmbH To: Date: Wed, 22 Aug 2001 19:41:10 +0200 MIME-Version: 1.0 Content-type: text/plain; charset=US-ASCII Content-transfer-encoding: 7BIT Subject: RE: Cygwin 1.3.2-1 Problems with CR/LF in Perl Reply-to: cygwin AT cygwin DOT com Message-ID: <3B840AD6.18467.1B46D39@localhost> In-reply-to: <8F23E55D511AD5119A6800D0B76FDDE1CA3095@cpex3.channelpoint.com> X-mailer: Pegasus Mail for Win32 (v3.12cDE) > Troy Noble schrieb am 2001-08-22 10:48: >So binmode(F1); or binmode(F2); didn't fix the behavior, >even on textmode mount? Yes, that's the workaround, but you will still have to fix every unixscript which should handle files on textmounts. The test script looks like that then: ===================================== #!/usr/bin/perl -w use strict; rename("file2.txt","file1.txt"); open(F1,"file1.txt"); open(F2,">file2.txt"); binmode(F1); binmode(F2); while() { # have to use chomp; chop; print F2 $_ . "\n"; to get it to work print F2; } close(F1); close(F2); >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. It works with my latest build and so should do the TRIAL release from last year. >The reason I mention it is that perldoc perlfunc says: $ perldoc -f binmode >""" >binmode FILEHANDLE > 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. >""" > >Troy > >-----Original Message----- >From: Gerrit P. Haase [mailto:cygwin AT cygwin DOT com] >Sent: Wednesday, August 22, 2001 10:29 AM >To: cygwin AT cygwin DOT com >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 the >>>CR/LF characters separately and then out as CR/CR/LF. This is supposed to >>>work on unix as well so I can't go chopping unnecessarily. Running the same >>>program under DOS (probably using windows' perl) doesn't cause any problems. >>>Perl version is 5.6.1 for cygwin. On installation I told cygwin to use Dos >>>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() { >>> # have to use chomp; chop; print F2 $_ . "\n"; to get it to work >>> print F2; >>>} >>>close(F1); >>>close(F2); -- gerrit DOT haase AT convey DOT de -- 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/