Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Comment on

( #3333=superdoc: print w/ replies, xml ) Need Help??
You all know, I'm sure, about how platform-specific input and output translation can happen to the "\n" character (on some systems). That is, when reading from a real disk file, there is a sequence of one or more character codes that gets translated into a "\n" character when read (assuming you don't call binmode). The reverse happens on a write to a physical file.

But what do you do when you have to duplicate this functionality? Say you have a buffer full of bytes that came from somewhere other than a disk file (so you can't use binmode) and you want to split it into lines of text. How do you know what character sequence is used for line endings on a particular operating system?

One obvious way to do this is to use a hash keyed by the value of $^O. But this quite ugly, requires me to know what all the line endings are, and breaks when someone comes up with a new port of Perl to a different operating system.

Another way might be to write a "\n" to a file in text mode and read it back in in binary mode, but this requires the existence of a writable file (which is not guaranteed) and is slow.

Has anyone come up with a better way to do this than the two methods mentioned above?


In reply to Quick and portable way to determine line-ending string? by bikeNomad

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?
    Username:
    Password:

    What's my password?
    Create A New User
    Chatterbox?
    and the web crawler heard nothing...

    How do I use this? | Other CB clients
    Other Users?
    Others rifling through the Monastery: (9)
    As of 2015-07-07 10:47 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?

      The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









      Results (88 votes), past polls