In perl.git, the branch smoke-me/alh/indented-heredocs has been created
<http://perl5.git.perl.org/perl.git/commitdiff/88bec374e26a712ba22ac26783e5c01af48e83fc?hp=0000000000000000000000000000000000000000>
at 88bec374e26a712ba22ac26783e5c01af48e83fc (commit)
- Log -----------------------------------------------------------------
commit 88bec374e26a712ba22ac26783e5c01af48e83fc
Author: Matthew Horsfall <[email protected]>
Date: Fri Nov 11 06:35:32 2016 -0500
Document Indented Here-docs
M pod/perldiag.pod
M pod/perlop.pod
commit efc8877c1929b7a4b258190cad555dd8187ac369
Author: Matthew Horsfall <[email protected]>
Date: Fri Nov 11 04:58:18 2016 -0500
Add indented here-docs.
This adds a new modifier '~' to here-docs that tells the parser
that it should look for /^\s*$DELIM\n/ as the closing delimiter.
These syntaxes are all supported:
<<~EOF;
<<~'EOF';
<<~"EOF";
<<~\EOF;
The '~' modifier will strip, from each line in the here-doc, the
same whitespace that appears before the delimiter.
Newlines will be copied as is, and lines that don't include the
proper beginning whitespace will cause perl to croak.
Some examples:
if (1) {
print <<~EOF;
Hello there
EOF
}
prints "Hello there\n";
The following:
if (1) {
print <<~EOF;
Hello There
EOF
}
croaks with:
Indentation on line 1 of here-doc doesn't match delimiter at - line 2.
M pod/perldiag.pod
M t/lib/warnings/toke
M t/op/exec.t
M t/op/heredoc.t
M toke.c
commit 122e761a2a3c3cbfc6c25ab5be8674ffa7cad50c
Author: Matthew Horsfall <[email protected]>
Date: Sat Nov 12 09:24:24 2016 -0500
Allow spaces between << and delimiter in here-doc
Previusly the following program would fail:
print << EOF;
hi
EOF
Like so:
Use of bare << to mean <<"" is deprecated at test.pl line 1.
Bareword found where operator expected at test.pl line 1, near "EOF"
(Missing operator before EOF?)
syntax error at test.pl line 1, near "EOF"
Execution of test.pl aborted due to compilation errors.
This seemed strange because we allow:
<< 'EOF';
<< "EOF":
<< `EOF`;
Now, "<< EOF" and "<< \EOF" work just like the others do.
M t/op/heredoc.t
M toke.c
-----------------------------------------------------------------------
--
Perl5 Master Repository