Mail Archives: cygwin/2001/08/22/13:46:49
> 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(<F1>) {
# 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(<F1>) {
>>> # 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/
- Raw text -