Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot

Re: adding 0D 0A to a UTF-8 file.

by elef (Friar)
on Feb 23, 2011 at 16:53 UTC ( #889831=note: print w/ replies, xml ) Need Help??

in reply to adding 0D 0A to a UTF-8 file.

I'm not sure what you really want to do here (why generate some output with a perl script and then copy-paste it into a file instead of just generating the final file with perl?), but here's some info:

The squares you see are definitely not the Windows line ending, which all Notepad versions display correctly as a line break (0D 0A, or, as perl coders tend to misleadingly call it, \r\n, or, as I like to call it, CRLF). It might be the Unix newline, i.e. LF, which Notepad can't handle and displays as a rectangle. Or it might be the old mac newline, CR.
BTW I'm sure the "arrows" you are seeing are just the opening and closing angle brackets of tags of some sort.
Perl always uses the platform's line ending as default, so, as you're running perl on Windows, the line ending generated by the line break character \n will be CRLF (this is why calling CR \r and calling LF \n is confusing: on Windows, \n generates CRLF, not just LF as it does on *nix).
Basically, if you use defaults on a file with Unix newlines on a Windows computer, you'll either generate a file with mixed LF/CRLF endings, or inadvertently convert the whole file to CRLF. The latter might actually be preferable to keeping it with LF, esp. if you'll open it with Notepad, but if you want to keep it with LF, you'll have to resort to trickery. Either redefine the newline character in your script or print LF "manually". Not sure how to do that, as this code seems to print CRLF on my computer:

open(LINE, ">:encoding(UTF-8)", "line.txt") or die "\nCan't create fil +e: $!\n"; print LINE "text" . chr(13) . "more text"; do \012, \x0A and
$/ = LF; open(LINE, ">:encoding(UTF-8)", "line.txt") or die "\nCan't create fil +e: $!\n"; print LINE "text\nmore text";

As far as I understand, these should all produce a file with a Unix newline, but all tests show that the file actually has CRLF. I'm lost here, but I'm sure somebody will shed light on this.
Further reading:

Comment on Re: adding 0D 0A to a UTF-8 file.
Select or Download Code

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://889831]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (7)
As of 2015-11-26 00:35 GMT
Find Nodes?
    Voting Booth?

    What would be the most significant thing to happen if a rope (or wire) tied the Earth and the Moon together?

    Results (694 votes), past polls