Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re^4: How to match last character of string, even if it happens to be a newline?

by haj (Hermit)
on May 13, 2019 at 05:46 UTC ( #1233679=note: print w/replies, xml ) Need Help??


in reply to Re^3: How to match last character of string, even if it happens to be a newline?
in thread How to match last character of string, even if it happens to be a newline?

In Perl, "\n" is always one character, regardless of the platform. It is written as two bytes if you use the default encoding on some platforms, Windows being the most popular. Newline has a nice overview.

If you read a file containing 0D0A using the default encoding on Unix platforms, or with binmode on any platform, you get two characters "\r\n" which you can (or have to) process.

  • Comment on Re^4: How to match last character of string, even if it happens to be a newline?

Replies are listed 'Best First'.
Re^5: How to match last character of string, even if it happens to be a newline?
by LanX (Archbishop) on May 13, 2019 at 16:49 UTC
    I think you are right, \n seems to be encoded as 0x0A on all plattforms.

    Though didn't test writing and rereading, but I suppose the effect to be the same as long as I don't specify an open with the binmode option.

    Thanks! :)

    Cheers Rolf
    (addicted to the Perl Programming Language :)
    Wikisyntax for the Monastery FootballPerl is like chess, only without the dice

      I think you are right, \n seems to be encoded as 0x0A on all plattforms.

      I can't test right now, but perlport says differently:

      Perl uses \n to represent the "logical" newline, where what is logical may depend on the platform in use. In MacPerl, \n always means \015. On EBCDIC platforms, \n could be \025 or \045. In DOSish perls, \n usually means \012, but when accessing a file in "text" mode, perl uses the :crlf layer that translates it to (or from) \015\012, depending on whether you're reading or writing. Unix does the same thing on ttys in canonical mode. \015\012 is commonly referred to as CRLF.
        I meant in memory, not how it's translated to the FS.

        That's the main confusion of this sub-thread =)

        Cheers Rolf
        (addicted to the Perl Programming Language :)
        Wikisyntax for the Monastery FootballPerl is like chess, only without the dice

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (11)
As of 2019-06-18 12:38 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Is there a future for codeless software?



    Results (81 votes). Check out past polls.

    Notices?
    • (Sep 10, 2018 at 22:53 UTC) Welcome new users!