Runtime file updates.
diff --git a/runtime/syntax/perl.vim b/runtime/syntax/perl.vim
index 4c403ba..ca5e099 100644
--- a/runtime/syntax/perl.vim
+++ b/runtime/syntax/perl.vim
@@ -141,6 +141,7 @@
 " Special variables first ($^A, ...) and ($|, $', ...)
 syn match  perlVarPlain		 "$^[ACDEFHILMNOPRSTVWX]\="
 syn match  perlVarPlain		 "$[\\\"\[\]'&`+*.,;=%~!?@#$<>(-]"
+syn match  perlVarPlain		 "%+"
 syn match  perlVarPlain		 "$\%(0\|[1-9]\d*\)"
 " Same as above, but avoids confusion in $::foo (equivalent to $main::foo)
 syn match  perlVarPlain		 "$::\@!"
@@ -216,7 +217,8 @@
 syn match  perlNotEmptyLine	"^\s\+$" contained
 " Highlight '} else if (...) {', it should be '} else { if (...) { ' or
 " '} elsif (...) {'.
-syn match perlElseIfError	"[^[:space:]{]\+" contained
+syn match perlElseIfError	"\s\+if" contained
+syn keyword perlElseIfError	elseif
 
 " Variable interpolation
 "