summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xt/t4018-diff-funcname.sh17
-rw-r--r--userdiff.c2
2 files changed, 16 insertions, 3 deletions
diff --git a/t/t4018-diff-funcname.sh b/t/t4018-diff-funcname.sh
index b2fd1a99da..b68c56b68c 100755
--- a/t/t4018-diff-funcname.sh
+++ b/t/t4018-diff-funcname.sh
@@ -29,7 +29,7 @@ public class Beer
}
EOF
sed 's/beer\\/beer,\\/' <Beer.java >Beer-correct.java
-cat >Beer.perl <<\EOF
+cat >Beer.perl <<\EOT
package Beer;
use strict;
@@ -56,6 +56,15 @@ sub finalround
print "99 bottles of beer on the wall.\n");
}
+sub withheredocument {
+ print <<"EOF"
+decoy here-doc
+EOF
+ # some lines of context
+ # to pad it out
+ print "hello\n";
+}
+
__END__
=head1 NAME
@@ -76,7 +85,7 @@ Beer - subroutine to output fragment of a drinking song
song;
=cut
-EOF
+EOT
sed -e '
s/hello/goodbye/
s/beer\\/beer,\\/
@@ -138,6 +147,10 @@ test_expect_success 'perl pattern accepts K&R style brace placement, too' '
test_expect_funcname "sub finalround\$" perl
'
+test_expect_success 'but is not distracted by end of <<here document' '
+ test_expect_funcname "sub withheredocument {\$" perl
+'
+
test_expect_success 'perl pattern is not distracted by sub within POD' '
test_expect_funcname "=head" perl
'
diff --git a/userdiff.c b/userdiff.c
index 42b86ac63d..e55310cd02 100644
--- a/userdiff.c
+++ b/userdiff.c
@@ -74,7 +74,7 @@ PATTERNS("perl",
"(:[^;#]*)?"
"(\\{[ \t]*)?" /* brace can come here or on the next line */
"(#.*)?$\n" /* comment */
- "^[A-Z]+[ \t]*" /* BEGIN, END, ... */
+ "^(BEGIN|END|INIT|CHECK|UNITCHECK|AUTOLOAD|DESTROY)[ \t]*"
"(\\{[ \t]*)?" /* brace can come here or on the next line */
"(#.*)?$\n"
"^=head[0-9] .*", /* POD */