in reply to ActivePerl 5.6.1 Win32 munging CR/LFs

Perl is not C (I'm still learning this myself)! The string tokens of \n or \r [are not | do not seem to be] C style CHAR-type data per se! Please refer to Camel book PACK and UNPACK functions for do hex-based string manipulation (pg 757 3rd edition) for yet another way to handle the problem (if you like hex strings).

Example:
use strict; my $cr=pack("H2",'0d'); my $lf=pack("H2",'0a'); my $lfcr=$lf.$cr; my $ans=unpack("H4",$lfcr); print '$lfcr=x',"$ans\n";

This will give your your linefeed/carrage return order, BUT depending how you're reading/manipulating your data (for example with <> and chop|chomp) you may need to clean the dangling single $lf's out yourself!

Update:

Thank you Tye, I stand humbly corrected (and learned something I didn't know) about what binmode does!

Replies are listed 'Best First'.
(tye)Re: ActivePerl 5.6.1 Win32 munging CR/LFs
by tye (Sage) on Jul 25, 2001 at 01:45 UTC

    No, no, no! Perl is nearly exactly like C in this regard. "\n" is always a single character. When it gets written to a non-binmode file under Win32, it gets turned into "\r\n". When it gets written to a (defaultly configured) device under Unix, it also gets turned into "\r\n" (but people don't worry much about that because you can't read the results back in).

            - tye (but my friends call me "Tye")