http://www.perlmonks.org?node_id=1174671


in reply to heredoc and Carriage return

I can confirm the behaviour in 5.25.5 (built on September 16) on Linux.

#!/usr/bin/perl use warnings; use strict; use feature qw{ say }; my $nix = << '__NIX__'; line 1 line 2 __NIX__ my $win = << '__WIN__'; # ^M present at end of lines. line 1 line 2 __WIN__ # ^M present here, too: my $quoted = 'line1 line2 '; say /\r/ for $nix, $win, $quoted;

I can't find it documented anywhere.

Update: It doesn't work for normal quoted strings, either.

($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,

Replies are listed 'Best First'.
Re^2: heredoc and carriers return
by LanX (Saint) on Oct 25, 2016 at 09:43 UTC
    I suppose it's related to Perl being OS agnostic regarding \n when printing.

    Please check the hex code of the here doc to see what is really embedded.

    Edit: OK seems like the regex is supposed to do this.

    Cheers Rolf
    (addicted to the Perl Programming Language and ☆☆☆☆ :)
    Je suis Charlie!

Re^2: heredoc and carriers return
by LanX (Saint) on Oct 25, 2016 at 11:10 UTC
    > I can't find it documented anywhere

    I'm to busy now, but you might wanna look into open which mentions a IO layer called :crlf or encoding or other docs mentioned in the footnotes ...

    Cheers Rolf
    (addicted to the Perl Programming Language and ☆☆☆☆ :)
    Je suis Charlie!

      Neither open nor encoding describe how they influence Perl's parsing of multiline string literals.

      ($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,