I'm reporting an issue with perl-mode's font lock for perl keywords, and suggesting a fix. To reproduce: - emacs -Q - clear the scratch buffer - M-x perl-mode - enter the following text: use Fake; my $use = 123; my $var = 123; - observe the issue: `$use` is incorrectly highlighted - it should be highlighted with the same color as `$var`, but it's highlighted with the same color as `use` (on the first line). The fix I suggest is borrowed from cperl-mode - extend the font lock regex to *not* match keywords if they start with a perl sigil. The diff is below, please let me know if it can be improved. I've signed the copyright assignment. From 8d1977cfc6c4884b231270c33c3bdabbd16b14aa Mon Sep 17 00:00:00 2001 From: Evgeni Kolev Date: Tue, 20 Feb 2018 18:14:29 +0200 Subject: [PATCH] lisp/progmodes/perl-mode.el: keyword regex must not match sigils --- lisp/progmodes/perl-mode.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/progmodes/perl-mode.el b/lisp/progmodes/perl-mode.el index 9948078..c1d94ac 100644 --- a/lisp/progmodes/perl-mode.el +++ b/lisp/progmodes/perl-mode.el @@ -165,7 +165,7 @@ perl-font-lock-keywords-1 ;; Fontify function and package names in declarations. ("\\<\\(package\\|sub\\)\\>[ \t]*\\(\\sw+\\)?" (1 font-lock-keyword-face) (2 font-lock-function-name-face nil t)) - ("\\<\\(import\\|no\\|require\\|use\\)\\>[ \t]*\\(\\sw+\\)?" + ("\\(^\\|[^$@%&\\]\\)\\<\\(import\\|no\\|require\\|use\\)\\>[ \t]*\\(\\sw+\\)?" (1 font-lock-keyword-face) (2 font-lock-constant-face nil t))) "Subdued level highlighting for Perl mode.") -- 2.9.0