in reply to CR-LF Newlines as 2 distinct characters

Can we see the code? Are you setting binmode on your filehandle? Are you running this on Windows? Have you tried playing with $\?

-sam

  • Comment on Re: CR-LF Newlines as 2 distinct characters

Replies are listed 'Best First'.
Re^2: CR-LF Newlines as 2 distinct characters
by blogical (Pilgrim) on May 18, 2006 at 20:33 UTC
    I confused $/ with $\. Thank you for bringing that up. I am currently running under windows. I have used binmode, but it seems to add a record seperator after every print statement. Close approximation:
    # @playlist has lines with no newlines my $playlist = undef; $playlist .= "$_\n" for ( "PLP PLAYLIST\nVERSION 1.20\n\n", @playlist +); open PLAYLIST, ">", 'playlist.plp' or die "Couldn't open playlist.plp: + $!"; print PLAYLIST "$_\x{00}" for (split //, $playlist);
    This produces what I want EXCEPT for the newline CR-LF being lumped together.

    "One is enough. If you are acquainted with the principle, what do you care for the myriad instances and applications?"
    - Henry David Thoreau, Walden

      I'm pretty sure you need binmode() here, at the very least. If you don't, Windows is going to try to expand LF into CRLF on the way out to disk. That's going to play hell with any attempt on your part to write out your own line-separator.

      Another thing I'd try - stop using \n altogether. Instead, write out the characters you want explicitely: "\x012\x013" (or however you write that).

      -sam

        Certainly the right track. I had stopped with binmode and gone in search of some way to have the string encoding treated differently, hence my foray into using Encode.pm. As you can see, I've come back to it though.

        "One is enough. If you are acquainted with the principle, what do you care for the myriad instances and applications?"
        - Henry David Thoreau, Walden