Perl
\\:i:`.(pl|cgi|inc|pm)(.txt)?$
\:m:
^#!/\w.*\=2b
|q\{\=:1\=40
|\=?1\}\=:0\=40
|\=?1'.*[^']'\=b
|\=?1\b(INSERT|UPDATE|DELETE|SELECT|SET|VALUES|COUNT|IFNULL|COALESCE|SUM|MIN|MAX|CONCAT|AS|FROM|LEFT|RIGHT|JOIN|ON|USING|WHERE|AND|OR|NOT|ORDER|GROUP|BY|LIMIT|ASC|DESC|HAVING)\b\=4b
|\=?1[\.+\-,*=]\=4b
|\=?1\b(CURDATE|NOW|TRUE|FALSE)\b\=49
|\=?1\w+\=9
|\=?1\?\=1f
|package [\w:]+\=40
|STD(IN|OUT|ERR)\=43
|\b(\w+::)+[A-Z0-9_]+(\(\<\=1|\b\=46) \; all-caps function or constant from another module
|\b\w+(::\w+)+\=1
|^(#+\n)#.*?\n#+\n\=1e
|#! .+\n\=33
|#\?.+\n\=3a
|##.+\n\=3f
|#\@.+\n\=35
|\\\&\=3
|'[\w\s]+'\s*=>\<\<\=47
|-\w+\s+=>\<\<\=67
|\b\w+\s+=>\<\<\=67
|\$["!\-+]\=4 \; - magic variable(s)
|\s[A-Z]+:\s\=41 \; label
|use [\w:]+\=8
|0x[0-9A-F]+\=8
|-?[0-9]+(\.[0-9]+)*\=8 \; - on numbers: no red
|#.*\=6e \; line comment
|~=\=a0
|^\s*=\w+[.\n]+\=4 \; documentation?
|(?1["'``])(\\?.)*?(\1|$)\=9 \; quoted string
|<<\s*(?1["'])(?2.+?)\1[.\n]+?(\2|\Z)\=29
|<<\s*(?1[A-Z]+)[.\n]+?(\1|\Z)\=29 \; heredoc
\; functions
|\bsub\s+\w+\b\=59
|&\w+(::\w+)*\=1
|\b(qq|qx|qw|m|qr)\b\s*(`(.*?`)|`<.*?`>|`[.*?`]|`{.*?`}|(?1\S).*?\1)\w*\=4b
|\b(s|tr)\b\s*(`(.*?`)\s*`(.*?`)|`<.*?`>\s*`<.*?`>|`[.*?`]\s*`[.*?`]|`{.*?`}\s*`{.*?`}|(?1\S).*?\1.*?\1)\w*\=9
|\b\w+\(\<\=1
\; keywords
|\b(if|e(ls(if|e)|val)|unless|while|until|for|foreach|given|when|d(efault|o)|next|continue|last|my|return|local)\b\=41
|new [a-zA-Z_][\w:]+\=41
\; operators
|\b(and|xor|or|not|eq|ne|gt|lt|le|ge|cmp|x)\b\=3
\; built in functions
|\b(a(bs|ccept|larm|tan2)|b(ind|inmode|less)|c(aller|hdir|hmod|homp|hop|hown|hr|hroot|lose|losedir|onnect|ontinue|os|rypt)|d(bmclose|bmopen|efined|elete|ie|o|ump)|e(ach|ndgrent|ndhostent|ndnetent|ndprotoent|ndpwent|ndservent|of|xec|xists|xit|xp)|f(cntl|ileno|lock|ork|ormat|ormline)|g(et(c|grent|grgid|grnam|hostbyaddr|hostbyname|hostent|login|netbyaddr|netbyname|netent|peername|pgrp|ppid|priority|protobyname|protobynumber|protoent|pwent|pwnam|pwuid|servbyname|servbyport|servent|sockname|sockopt)|lob|mtime|oto|rep)|hex|i(mport|ndex|nt|octl)|join|k(eys|ill)|l(ast|c|cfirst|ength|ink|isten|ocaltime|ock|og|stat)|m(ap|kdir|sgctl|sgget|sgrcv|sgsnd)|n(ext|o)|o(ct|pen|pendir|rd|ur)|p(ack|ackage|ipe|op|os|rint|rintf|rototype|ush)|q(q|r|uotemeta|w|x)|r(and|ead|eaddir|eadline|eadlink|eadpipe|ecv|edo|ef|ename|equire|eset|everse|ewinddir|index|mdir)|s(ay|calar|eek|eekdir|elect|emctl|emget|emop|end|etgrent|ethostent|etnetent|etpgrp|etpriority|etprotoent|etpwent|etservent|etsockopt|hift|hmctl|hmget|hmread|hmwrite|hutdown|in|leep|ocket|ocketpair|ort|plice|plit|printf|qrt|rand|tat|tudy|ub|ubstr|ymlink|yscall|ysopen|ysread|ysseek|ystem|yswrite)|t(ell|elldir|ie|ied|ime|imes|r|runcate)|u(c|cfirst|mask|ndef|nlink|npack|nshift|ntie|se|time)|v(alues|ec)|w(ait|aitpid|antarray|arn|rite)|y)\b\=1
|\b[A-Z0-9_]+\b\=46
|(`$#|[@*%\$])\w+(::\w+)*\=2 \; variables
|[!`.+`-/*=;&|~`^><@`\?:`$%]\=3 \; symbols
|(^\{|\}$|\s\{$)\=40