comment TODO: Include RegExp syntax fileTypes pl pm pod t PL firstLineMatch ^#!.*\bperl\b foldingStartMarker (/\*|(\{|\[|\()\s*$) foldingStopMarker (\*/|^\s*(\}|\]|\))) keyEquivalent ^~P name Perl patterns include #line_comment begin ^= captures 0 name punctuation.definition.comment.perl end ^=cut name comment.block.documentation.perl include #variable applyEndPatternLast 1 begin \b(?=qr\s*[^\s\w]) comment string.regexp.compile.perl end ((([egimosx]*)))(?=(\s+\S|\s*[;\,\#\{\}\)]|$)) endCaptures 1 name string.regexp.compile.perl 2 name punctuation.definition.string.perl 3 name keyword.control.regexp-option.perl patterns begin (qr)\s*\{ captures 0 name punctuation.definition.string.perl 1 name support.function.perl end \} name string.regexp.compile.nested_braces.perl patterns include #escaped_char include #variable include #nested_braces_interpolated begin (qr)\s*\[ captures 0 name punctuation.definition.string.perl 1 name support.function.perl end \] name string.regexp.compile.nested_brackets.perl patterns include #escaped_char include #variable include #nested_brackets_interpolated begin (qr)\s*< captures 0 name punctuation.definition.string.perl 1 name support.function.perl end > name string.regexp.compile.nested_ltgt.perl patterns include #escaped_char include #variable include #nested_ltgt_interpolated begin (qr)\s*\( captures 0 name punctuation.definition.string.perl 1 name support.function.perl end \) name string.regexp.compile.nested_parens.perl patterns include #escaped_char include #variable include #nested_parens_interpolated begin (qr)\s*\' captures 0 name punctuation.definition.string.perl 1 name support.function.perl end \' name string.regexp.compile.single-quote.perl patterns include #escaped_char begin (qr)\s*([^\s\w\'\{\[\(\<]) captures 0 name punctuation.definition.string.perl 1 name support.function.perl end \2 name string.regexp.compile.simple-delimiter.perl patterns comment This is to prevent thinks like qr/foo$/ to treat $/ as a variable match \$(?=[^\s\w\'\{\[\(\<]) name keyword.control.anchor.perl include #escaped_char include #variable include #nested_parens_interpolated applyEndPatternLast 1 begin \b(?=(?<!\&)(s)(\s+\S|\s*[;\,\#\{\}\(\)\[<]|$)) comment string.regexp.replace.perl end ((([egimosx]*)))(?=(\s+\S|\s*[;\,\#\{\}\)\]>]|$)) endCaptures 1 name string.regexp.replace.perl 2 name punctuation.definition.string.perl 3 name keyword.control.regexp-option.perl patterns begin (s)\s*\{ captures 0 name punctuation.definition.string.perl 1 name support.function.perl end \} name string.regexp.nested_braces.perl patterns include #escaped_char include #nested_braces begin (s)\s*\[ captures 0 name punctuation.definition.string.perl 1 name support.function.perl end \] name string.regexp.nested_brackets.perl patterns include #escaped_char include #nested_brackets begin (s)\s*< captures 0 name punctuation.definition.string.perl 1 name support.function.perl end > name string.regexp.nested_ltgt.perl patterns include #escaped_char include #nested_ltgt begin (s)\s*\( captures 0 name punctuation.definition.string.perl 1 name support.function.perl end \) name string.regexp.nested_parens.perl patterns include #escaped_char include #nested_parens begin \{ captures 0 name punctuation.definition.string.perl end \} name string.regexp.format.nested_braces.perl patterns include #escaped_char include #variable include #nested_braces_interpolated begin \[ captures 0 name punctuation.definition.string.perl end \] name string.regexp.format.nested_brackets.perl patterns include #escaped_char include #variable include #nested_brackets_interpolated begin < captures 0 name punctuation.definition.string.perl end > name string.regexp.format.nested_ltgt.perl patterns include #escaped_char include #variable include #nested_ltgt_interpolated begin \( captures 0 name punctuation.definition.string.perl end \) name string.regexp.format.nested_parens.perl patterns include #escaped_char include #variable include #nested_parens_interpolated begin ' captures 0 name punctuation.definition.string.perl end ' name string.regexp.format.single_quote.perl patterns match \\['\\] name constant.character.escape.perl begin ([^\s\w\[({<;]) captures 0 name punctuation.definition.string.perl end \1 name string.regexp.format.simple_delimiter.perl patterns include #escaped_char include #variable match \s+ begin \b(?=s([^\s\w\[({<]).*\1([egimos]*)([\}\)\;\,]|\s+)) comment string.regexp.replaceXXX end ((([egimos]*)))(?=([\}\)\;\,]|\s+|$)) endCaptures 1 name string.regexp.replace.perl 2 name punctuation.definition.string.perl 3 name keyword.control.regexp-option.perl patterns begin (s\s*)([^\s\w\[({<]) captures 0 name punctuation.definition.string.perl 1 name support.function.perl end (?=\2) name string.regexp.replaceXXX.simple_delimiter.perl patterns include #escaped_char begin ' captures 0 name punctuation.definition.string.perl end ' name string.regexp.replaceXXX.format.single_quote.perl patterns match \\['\\] name constant.character.escape.perl.perl begin ([^\s\w\[({<]) captures 0 name punctuation.definition.string.perl end \1 name string.regexp.replaceXXX.format.simple_delimiter.perl patterns include #escaped_char include #variable begin \b(?=(?<!\\)s\s*([^\s\w\[({<])) comment string.regexp.replace.extended end \1((([egimos]*x[egimos]*)))\b endCaptures 1 name string.regexp.replace.perl 2 name punctuation.definition.string.perl 3 name keyword.control.regexp-option.perl patterns begin (s)\s*(.) captures 0 name punctuation.definition.string.perl 1 name support.function.perl end (?=\2) name string.regexp.replace.extended.simple_delimiter.perl patterns include #escaped_char begin ' captures 0 name punctuation.definition.string.perl end '(?=[egimos]*x[egimos]*)\b name string.regexp.replace.extended.simple_delimiter.perl patterns include #escaped_char begin (.) captures 0 name punctuation.definition.string.perl end \1(?=[egimos]*x[egimos]*)\b name string.regexp.replace.extended.simple_delimiter.perl patterns include #escaped_char include #variable match \b\w+\s*(?==>) name constant.other.key.perl match (?<={)\s*\w+\s*(?=}) name constant.other.bareword.perl captures 1 name punctuation.definition.string.perl 5 name punctuation.definition.string.perl match (?<!\\)((~\s*)?\/)(\S.*?)(?<!\\)(\\{2})*(\/) name string.regexp.find.perl begin (?<!\\)(\~\s*\/) captures 0 name punctuation.definition.string.perl end \/([cgimos]*x[cgimos]*)\b endCaptures 1 name keyword.control.regexp-option.perl name string.regexp.find.extended.perl patterns include #escaped_char include #variable captures 1 name keyword.control.perl 2 name entity.name.type.class.perl 3 name comment.line.number-sign.perl 4 name punctuation.definition.comment.perl match ^\s*(package)\s+(\S+)\s*((#).*)?$\n? name meta.class.perl captures 1 name storage.type.sub.perl 2 name entity.name.function.perl 3 name storage.type.method.perl match ^\s*(sub)\s+([-a-zA-Z0-9_]+)\s*(\([\$\@\*;]*\))? name meta.function.perl captures 1 name entity.name.function.perl 2 name punctuation.definition.parameters.perl 3 name variable.parameter.function.perl match ^\s*(BEGIN|END|DESTROY)\b name meta.function.perl begin ^(?=(\t| {4})) end (?=[^\t\s]) name meta.leading-tabs patterns captures 1 name meta.odd-tab 2 name meta.even-tab match (\t| {4})(\t| {4})? captures 1 name support.function.perl 2 name punctuation.definition.string.perl 5 name punctuation.definition.string.perl match \b(m)\s*(?<!\\)([^\[\{\(A-Za-z0-9\s])(.*?)(?<!\\)(\\{2})*(\2) name string.regexp.find-m.perl begin \b(m)\s*(?<!\\)\( beginCaptures 0 name punctuation.definition.string.begin.perl end \) endCaptures 0 name punctuation.definition.string.end.perl name string.regexp.find-m-paren.perl patterns include #escaped_char include #nested_parens_interpolated include #variable begin \b(m)\s*(?<!\\)\{ beginCaptures 0 name punctuation.definition.string.begin.perl end \} endCaptures 0 name punctuation.definition.string.end.perl name string.regexp.find-m-brace.perl patterns include #escaped_char include #nested_braces_interpolated include #variable begin \b(m)\s*(?<!\\)\[ beginCaptures 0 name punctuation.definition.string.begin.perl end \] endCaptures 0 name punctuation.definition.string.end.perl name string.regexp.find-m-bracket.perl patterns include #escaped_char include #nested_brackets_interpolated include #variable begin \b(m)\s*(?<!\\)\< beginCaptures 0 name punctuation.definition.string.begin.perl end \> endCaptures 0 name punctuation.definition.string.end.perl name string.regexp.find-m-ltgt.perl patterns include #escaped_char include #nested_ltgt_interpolated include #variable captures 1 name support.function.perl 2 name punctuation.definition.string.perl 5 name punctuation.definition.string.perl 8 name punctuation.definition.string.perl match \b(s|tr|y)\s*([^A-Za-z0-9\s])(.*?)(?<!\\)(\\{2})*(\2)(.*?)(?<!\\)(\\{2})*(\2) name string.regexp.replace.perl match \b(__FILE__|__LINE__|__PACKAGE__)\b name constant.language.perl match (?<!->)\b(continue|die|do|else|elsif|exit|for|foreach|goto|if|last|next|redo|return|select|unless|until|wait|while|switch|case|package|require|use|eval)\b name keyword.control.perl match \b(my|our|local)\b name storage.modifier.perl match (?<!\w)\-[rwx0RWXOezsfdlpSbctugkTBMAC]\b name keyword.operator.filetest.perl match \b(and|or|xor|as)\b name keyword.operator.logical.perl match (<=>| =>|->) name keyword.operator.comparison.perl begin ((<<) *"HTML").*\n? captures 0 name punctuation.definition.string.perl 1 name string.unquoted.heredoc.doublequote.perl 2 name punctuation.definition.heredoc.perl contentName text.html.embedded.perl end (^HTML$) patterns include #escaped_char include #variable include text.html.basic begin ((<<) *"XML").*\n? captures 0 name punctuation.definition.string.perl 1 name string.unquoted.heredoc.doublequote.perl 2 name punctuation.definition.heredoc.perl contentName text.xml.embedded.perl end (^XML$) patterns include #escaped_char include #variable include text.xml begin ((<<) *"CSS").*\n? captures 0 name punctuation.definition.string.perl 1 name string.unquoted.heredoc.doublequote.perl 2 name punctuation.definition.heredoc.perl contentName text.css.embedded.perl end (^CSS$) patterns include #escaped_char include #variable include source.css begin ((<<) *"JAVASCRIPT").*\n? captures 0 name punctuation.definition.string.perl 1 name string.unquoted.heredoc.doublequote.perl 2 name punctuation.definition.heredoc.perl contentName text.js.embedded.perl end (^JAVASCRIPT$) patterns include #escaped_char include #variable include source.js begin ((<<) *"SQL").*\n? captures 0 name punctuation.definition.string.perl 1 name string.unquoted.heredoc.doublequote.perl 2 name punctuation.definition.heredoc.perl contentName source.sql.embedded.perl end (^SQL$) patterns include #escaped_char include #variable include source.sql begin ((<<) *"POSTSCRIPT").*\n? captures 0 name punctuation.definition.string.perl 1 name string.unquoted.heredoc.doublequote.perl 2 name punctuation.definition.heredoc.perl contentName text.postscript.embedded.perl end (^POSTSCRIPT$) patterns include #escaped_char include #variable include source.postscript begin ((<<) *"([^"]*)").*\n? captures 0 name punctuation.definition.string.perl 1 name string.unquoted.heredoc.doublequote.perl 2 name punctuation.definition.heredoc.perl contentName string.unquoted.heredoc.doublequote.perl end (^\3$) patterns include #escaped_char include #variable begin ((<<) *'HTML').*\n? captures 0 name punctuation.definition.string.perl 1 name string.unquoted.heredoc.quote.perl 2 name punctuation.definition.heredoc.perl contentName text.html.embedded.perl end (^HTML$) patterns include text.html.basic begin ((<<) *'XML').*\n? captures 0 name punctuation.definition.string.perl 1 name string.unquoted.heredoc.quote.perl 2 name punctuation.definition.heredoc.perl contentName text.xml.embedded.perl end (^XML$) patterns include text.xml begin ((<<) *'CSS').*\n? captures 0 name punctuation.definition.string.perl 1 name string.unquoted.heredoc.quote.perl 2 name punctuation.definition.heredoc.perl contentName text.css.embedded.perl end (^CSS$) patterns include source.css begin ((<<) *'JAVASCRIPT').*\n? captures 0 name punctuation.definition.string.perl 1 name string.unquoted.heredoc.quote.perl 2 name punctuation.definition.heredoc.perl contentName text.js.embedded.perl end (^JAVASCRIPT$) patterns include source.js begin ((<<) *'SQL').*\n? captures 0 name punctuation.definition.string.perl 1 name string.unquoted.heredoc.quote.perl 2 name punctuation.definition.heredoc.perl contentName source.sql.embedded.perl end (^SQL$) patterns include source.sql begin ((<<) *'POSTSCRIPT').*\n? captures 0 name punctuation.definition.string.perl 1 name string.unquoted.heredoc.quote.perl 2 name punctuation.definition.heredoc.perl contentName source.postscript.embedded.perl end (^POSTSCRIPT) patterns include source.postscript begin ((<<) *'([^']*)').*\n? captures 0 name punctuation.definition.string.perl 1 name string.unquoted.heredoc.quote.perl 2 name punctuation.definition.heredoc.perl contentName string.unquoted.heredoc.quote.perl end (^\3$) begin ((<<) *`([^`]*)`).*\n? captures 0 name punctuation.definition.string.perl 1 name string.unquoted.heredoc.backtick.perl 2 name punctuation.definition.heredoc.perl contentName string.unquoted.heredoc.backtick.perl end (^\3$) patterns include #escaped_char include #variable begin ((<<) *HTML\b).*\n? captures 0 name punctuation.definition.string.perl 1 name string.unquoted.heredoc.perl 2 name punctuation.definition.heredoc.perl contentName text.html.embedded.perl end (^HTML$) patterns include #escaped_char include #variable include text.html.basic begin ((<<) *XML\b).*\n? captures 0 name punctuation.definition.string.perl 1 name string.unquoted.heredoc.perl 2 name punctuation.definition.heredoc.perl contentName text.xml.embedded.perl end (^XML$) patterns include #escaped_char include #variable include text.xml begin ((<<) *SQL\b).*\n? captures 0 name punctuation.definition.string.perl 1 name string.unquoted.heredoc.perl 2 name punctuation.definition.heredoc.perl contentName source.sql.embedded.perl end (^SQL$) patterns include #escaped_char include #variable include source.sql begin ((<<) *POSTSCRIPT\b).*\n? captures 0 name punctuation.definition.string.perl 1 name string.unquoted.heredoc.perl 2 name punctuation.definition.heredoc.perl contentName source.postscript.embedded.perl end (^POSTSCRIPT) patterns include #escaped_char include #variable include source.postscript begin ((<<) *((?![=\d\$ ])[^;,'"`\s)]*)).*\n? captures 0 name punctuation.definition.string.perl 1 name string.unquoted.heredoc.perl 2 name punctuation.definition.heredoc.perl contentName string.unquoted.heredoc.perl end (^\3$) patterns include #escaped_char include #variable begin \bqq\s*([^\(\{\[\<\w\s]) beginCaptures 0 name punctuation.definition.string.begin.perl end \1 endCaptures 0 name punctuation.definition.string.end.perl name string.quoted.other.qq.perl patterns include #escaped_char include #variable begin \bqx\s*([^'\(\{\[\<\w\s]) beginCaptures 0 name punctuation.definition.string.begin.perl end \1 endCaptures 0 name punctuation.definition.string.end.perl name string.interpolated.qx.perl patterns include #escaped_char include #variable begin \bqx\s*' beginCaptures 0 name punctuation.definition.string.begin.perl end ' endCaptures 0 name punctuation.definition.string.end.perl name string.interpolated.qx.single-quote.perl patterns include #escaped_char begin " beginCaptures 0 name punctuation.definition.string.begin.perl end " endCaptures 0 name punctuation.definition.string.end.perl name string.quoted.double.perl patterns include #escaped_char include #variable begin \bqw?\s*([^\(\{\[\<\w\s]) beginCaptures 0 name punctuation.definition.string.begin.perl end \1 endCaptures 0 name punctuation.definition.string.end.perl name string.quoted.other.q.perl patterns include #escaped_char begin ' beginCaptures 0 name punctuation.definition.string.begin.perl end ' endCaptures 0 name punctuation.definition.string.end.perl name string.quoted.single.perl patterns match \\['\\] name constant.character.escape.perl begin ` beginCaptures 0 name punctuation.definition.string.begin.perl end ` endCaptures 0 name punctuation.definition.string.end.perl name string.interpolated.perl patterns include #escaped_char include #variable begin \bqq\s*\( beginCaptures 0 name punctuation.definition.string.begin.perl end \) endCaptures 0 name punctuation.definition.string.end.perl name string.quoted.other.qq-paren.perl patterns include #escaped_char include #nested_parens_interpolated include #variable begin \bqq\s*\{ beginCaptures 0 name punctuation.definition.string.begin.perl end \} endCaptures 0 name punctuation.definition.string.end.perl name string.quoted.other.qq-brace.perl patterns include #escaped_char include #nested_braces_interpolated include #variable begin \bqq\s*\[ beginCaptures 0 name punctuation.definition.string.begin.perl end \] endCaptures 0 name punctuation.definition.string.end.perl name string.quoted.other.qq-bracket.perl patterns include #escaped_char include #nested_brackets_interpolated include #variable begin \bqq\s*\< beginCaptures 0 name punctuation.definition.string.begin.perl end \> endCaptures 0 name punctuation.definition.string.end.perl name string.quoted.other.qq-ltgt.perl patterns include #escaped_char include #nested_ltgt_interpolated include #variable begin \bqx\s*\( beginCaptures 0 name punctuation.definition.string.begin.perl end \) endCaptures 0 name punctuation.definition.string.end.perl name string.interpolated.qx-paren.perl patterns include #escaped_char include #nested_parens_interpolated include #variable begin \bqx\s*\{ beginCaptures 0 name punctuation.definition.string.begin.perl end \} endCaptures 0 name punctuation.definition.string.end.perl name string.interpolated.qx-brace.perl patterns include #escaped_char include #nested_braces_interpolated include #variable begin \bqx\s*\[ beginCaptures 0 name punctuation.definition.string.begin.perl end \] endCaptures 0 name punctuation.definition.string.end.perl name string.interpolated.qx-bracket.perl patterns include #escaped_char include #nested_brackets_interpolated include #variable begin \bqx\s*\< beginCaptures 0 name punctuation.definition.string.begin.perl end \> endCaptures 0 name punctuation.definition.string.end.perl name string.interpolated.qx-ltgt.perl patterns include #escaped_char include #nested_ltgt_interpolated include #variable begin \bqw?\s*\( beginCaptures 0 name punctuation.definition.string.begin.perl end \) endCaptures 0 name punctuation.definition.string.end.perl name string.quoted.other.q-paren.perl patterns include #escaped_char include #nested_parens begin \bqw?\s*\{ beginCaptures 0 name punctuation.definition.string.begin.perl end \} endCaptures 0 name punctuation.definition.string.end.perl name string.quoted.other.q-brace.perl patterns include #escaped_char include #nested_braces begin \bqw?\s*\[ beginCaptures 0 name punctuation.definition.string.begin.perl end \] endCaptures 0 name punctuation.definition.string.end.perl name string.quoted.other.q-bracket.perl patterns include #escaped_char include #nested_brackets begin \bqw?\s*\< beginCaptures 0 name punctuation.definition.string.begin.perl end \> endCaptures 0 name punctuation.definition.string.end.perl name string.quoted.other.q-ltgt.perl patterns include #escaped_char include #nested_ltgt begin ^__\w+__ beginCaptures 0 name punctuation.definition.string.begin.perl end $ endCaptures 0 name punctuation.definition.string.end.perl name string.unquoted.program-block.perl begin \b(format)\s+([A-Za-z]+)\s*= beginCaptures 1 name support.function.perl 2 name entity.name.function.format.perl end ^\.\s*$ name meta.format.perl patterns include #line_comment include #variable match \b(ARGV|DATA|ENV|SIG|STDERR|STDIN|STDOUT|atan2|bind|binmode|bless|caller|chdir|chmod|chomp|chop|chown|chr|chroot|close|closedir|cmp|connect|cos|crypt|dbmclose|dbmopen|defined|delete|dump|each|endgrent|endhostent|endnetent|endprotoent|endpwent|endservent|eof|eq|eval|exec|exists|exp|fcntl|fileno|flock|fork|format|formline|ge|getc|getgrent|getgrgid|getgrnam|gethostbyaddr|gethostbyname|gethostent|getlogin|getnetbyaddr|getnetbyname|getnetent|getpeername|getpgrp|getppid|getpriority|getprotobyname|getprotobynumber|getprotoent|getpwent|getpwnam|getpwuid|getservbyname|getservbyport|getservent|getsockname|getsockopt|glob|gmtime|grep|gt|hex|import|index|int|ioctl|join|keys|kill|lc|lcfirst|le|length|link|listen|local|localtime|log|lstat|lt|m|map|mkdir|msgctl|msgget|msgrcv|msgsnd|ne|no|oct|open|opendir|ord|pack|pipe|pop|pos|print|printf|push|q|qq|quotemeta|qw|qx|rand|read|readdir|readlink|recv|ref|rename|reset|reverse|rewinddir|rindex|rmdir|s|scalar|seek|seekdir|semctl|semget|semop|send|setgrent|sethostent|setnetent|setpgrp|setpriority|setprotoent|setpwent|setservent|setsockopt|shift|shmctl|shmget|shmread|shmwrite|shutdown|sin|sleep|socket|socketpair|sort|splice|split|sprintf|sqrt|srand|stat|study|substr|symlink|syscall|sysopen|sysread|system|syswrite|tell|telldir|tie|tied|time|times|tr|truncate|uc|ucfirst|umask|undef|unlink|unpack|unshift|untie|utime|values|vec|waitpid|wantarray|warn|write|y|q|qw|qq|qx)\b name support.function.perl repository escaped_char match \\. name constant.character.escape.perl line_comment patterns captures 1 name comment.line.number-sign.perl 2 name punctuation.definition.comment.perl match ^((#).*$\n?) name meta.comment.full-line.perl captures 1 name punctuation.definition.comment.perl match (#).*$\n? name comment.line.number-sign.perl nested_braces begin \{ captures 1 name punctuation.section.scope.perl end \} patterns include #escaped_char include #nested_braces nested_braces_interpolated begin \{ captures 1 name punctuation.section.scope.perl end \} patterns include #escaped_char include #variable include #nested_braces_interpolated nested_brackets begin \[ captures 1 name punctuation.section.scope.perl end \] patterns include #escaped_char include #nested_brackets nested_brackets_interpolated begin \[ captures 1 name punctuation.section.scope.perl end \] patterns include #escaped_char include #variable include #nested_brackets_interpolated nested_ltgt begin < captures 1 name punctuation.section.scope.perl end > patterns include #nested_ltgt nested_ltgt_interpolated begin < captures 1 name punctuation.section.scope.perl end > patterns include #variable include #nested_ltgt_interpolated nested_parens begin \( captures 1 name punctuation.section.scope.perl end \) patterns include #escaped_char include #nested_parens nested_parens_interpolated begin \( captures 1 name punctuation.section.scope.perl end \) patterns comment This is to prevent thinks like qr/foo$/ to treat $/ as a variable match \$(?=[^\s\w\'\{\[\(\<]) name keyword.control.anchor.perl include #escaped_char include #variable include #nested_parens_interpolated variable patterns captures 1 name punctuation.definition.variable.perl match (\$)&(?![A-Za-z0-9_]) name variable.other.regexp.match.perl captures 1 name punctuation.definition.variable.perl match (\$)`(?![A-Za-z0-9_]) name variable.other.regexp.pre-match.perl captures 1 name punctuation.definition.variable.perl match (\$)'(?![A-Za-z0-9_]) name variable.other.regexp.post-match.perl captures 1 name punctuation.definition.variable.perl match (\$)\+(?![A-Za-z0-9_]) name variable.other.regexp.last-paren-match.perl captures 1 name punctuation.definition.variable.perl match (\$)"(?![A-Za-z0-9_]) name variable.other.readwrite.list-separator.perl captures 1 name punctuation.definition.variable.perl match (\$)0(?![A-Za-z0-9_]) name variable.other.predefined.program-name.perl captures 1 name punctuation.definition.variable.perl match (\$)[_ab\*\.\/\|,\\;#%=\-~^:?!\$<>\(\)\[\]@](?![A-Za-z0-9_]) name variable.other.predefined.perl captures 1 name punctuation.definition.variable.perl match (\$)[0-9]+(?![A-Za-z0-9_]) name variable.other.subpattern.perl captures 1 name punctuation.definition.variable.perl match ([\$\@\%](#)?)([a-zA-Zx7f-xff\$]|::)([a-zA-Z0-9_x7f-xff\$]|::)*\b name variable.other.readwrite.global.perl captures 1 name punctuation.definition.variable.perl 2 name punctuation.definition.variable.perl match (\$\{)(?:[a-zA-Zx7f-xff\$]|::)(?:[a-zA-Z0-9_x7f-xff\$]|::)*(\}) name variable.other.readwrite.global.perl captures 1 name punctuation.definition.variable.perl match ([\$\@\%](#)?)[0-9_]\b name variable.other.readwrite.global.special.perl scopeName source.perl uuid EDBFE125-6B1C-11D9-9189-000D93589AF6