> -----Original Message-----
> From: Dave Benware [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, January 31, 2002 8:51 AM
> To: Beginners perl
> Subject: Re: What is the newline character (\n) equal to?
> 
> 
> Dave Benware wrote:
> > CR/LF has never been translated to a LF while reading a file
> > for me.  If that were true, the whole situation would be
> > transparent and I would have never asked the question it seems.
> > I didn't see anything about this "translating" in the docs
> > on the binmode function.
> > 
> > Bompa
> 
> Excuse me, I *do* see the "poop" you refered to in the binmode
> function docs, however, it doesn't seem to be that way in reality.

A challenge, eh! OK, run the following program on a Windows machine:

   # create a string
   $s = "foo\n";
   print "length is ", length($s), "\n";

   # write it to a file
   open F, ">foo.txt" or die $!;
   print F $s;
   close F;

   # see size of file
   system "dir foo.txt";

   # read back from file
   open F, "<foo.txt" or die $!;
   $s = <F>;
   close F;
   print "length is ", length($s), "\n";

   # read from file in binary mode
   open F, "<foo.txt" or die $!;
   binmode F;
   $s = <F>;
   close F;
   print "length is ", length($s), "\n";

When I run it on my Win98 PC, I get the following output:

   length is 4

    Volume in drive C has no label
    Volume Serial Number is 07D1-031B
    Directory of C:\Temp

   FOO      TXT             5  01-31-02  9:00a foo.txt
            1 file(s)              5 bytes
            0 dir(s)        7,104.59 MB free
   length is 4
   length is 5

So you can see that the string is 4 bytes long. When I write it to the file,
the file becomes 5 bytes, because the LF is converted to a CR/LF pair. When
I read it back in, the reverse conversion is made, so the string becomes 4
bytes again. When I call binmode, that conversion is not made, so the 5
bytes
from the file are read in.

Make sense?

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to