Subject: bug#22843: perl-mode coloring sees too deeply into <<EOF

From: Stefan Kangas <[email-masked]>
Date: Sat, 6 Jul 2019 05:40:40 +0200

積丹尼 Dan Jacobson <[email-masked]> writes:

> After "print <<EOF;" the colors are all wrong!
>
> #!/usr/bin/perl
> # Make a sheet of my substandard size namecards
> # which hopefully fit all on one printer page.
> # Copyright       : http://www.fsf.org/copyleft/gpl.html
> # Created On      : July 2006
> # Last Modified On: Sun Feb 14 00:45:33 2016
> # Update Count    : 214
> use strict;
> use warnings FATAL => 'all';
> ##use HTML::Table;
> use constant ONECARD => <<\EOF;
> 積丹尼 Dan Jacobson<br>
> http://jidanni.org/<br>
> 台中市東勢區慶福街1-6號<br>
> 0963-114343 04-25854780
> EOF
> print <<EOF;
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
> "http://www.w3.org/TR/html4/strict.dtd">
> <html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
> <meta http-equiv="Content-Language" content="zh-tw">
> <!-- MADE VIA ~/namecard; WILL GET OVERWRITTEN-->
> <style type="text/css">
> TD { text-align: center }
> </style>
> <title>Namecard</title></head><body>
> <table border="1" cellspacing="0" cellpadding="18" summary="Name cards">
> EOF
> ## cellpadding 17 will cause an extra page
> for ( 1 .. 8 ) {
> ## 育才列印 was able to print 1..9 !
>     print '<tr>';
>     for ( 1 .. 3 ) {
>         print '<th>', ONECARD, '</th>';
>     }
>     print "</tr>\n";
> }
> print "</table>\n</body></html>\n";
>
> The previous print <<\EOF; doesn't have that problem.
>
> cperl-mode gets both correct.
>
> emacs-version "24.5.1"

I tried reproducing this on the latest version of Emacs, 26.2, but was
unable to.  The colors after "print <<EOF;" seemed fine to me.

Could you please try reproducing this with the latest version of Emacs?

Please also provide more details on what colors are wrong -- on what
line, which color you see and which you would have expected instead.

Thanks,
Stefan Kangas