comment TODO: Include RegExp syntax fileTypes pl pm pod t PL psgi firstLineMatch ^#!.*\bperl\b 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 ((([egimosxradlupc]*)))(?=(\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 comment This is to prevent thinks like qr/foo$/ to treat $/ as a variable match \$(?=[^\s\w\\'\{\[\(\<]) 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(?=m\s*[^\sa-zA-Z0-9]) comment string.regexp.find-m.perl end ((([egimosxradlupc]*)))(?=(\s+\S|\s*[;\,\#\{\}\)]|$)) endCaptures 1 name string.regexp.find-m.perl 2 name punctuation.definition.string.perl 3 name keyword.control.regexp-option.perl patterns begin (m)\s*\{ captures 0 name punctuation.definition.string.perl 1 name support.function.perl end \} name string.regexp.find-m.nested_braces.perl patterns include #escaped_char include #variable include #nested_braces_interpolated begin (m)\s*\[ captures 0 name punctuation.definition.string.perl 1 name support.function.perl end \] name string.regexp.find-m.nested_brackets.perl patterns include #escaped_char include #variable include #nested_brackets_interpolated begin (m)\s*< captures 0 name punctuation.definition.string.perl 1 name support.function.perl end > name string.regexp.find-m.nested_ltgt.perl patterns include #escaped_char include #variable include #nested_ltgt_interpolated begin (m)\s*\( captures 0 name punctuation.definition.string.perl 1 name support.function.perl end \) name string.regexp.find-m.nested_parens.perl patterns include #escaped_char include #variable include #nested_parens_interpolated begin (m)\s*' captures 0 name punctuation.definition.string.perl 1 name support.function.perl end ' name string.regexp.find-m.single-quote.perl patterns include #escaped_char begin (m)\s*([^\sa-zA-Z0-9'\{\[\(\<]) captures 0 name punctuation.definition.string.perl 1 name support.function.perl end \2 name string.regexp.find-m.simple-delimiter.perl patterns comment This is to prevent thinks like qr/foo$/ to treat $/ as a variable match \$(?=[^\sa-zA-Z0-9'\{\[\(\<]) name keyword.control.anchor.perl include #escaped_char include #variable begin \[ beginCaptures 1 name punctuation.definition.character-class.begin.perl end \] endCaptures 1 name punctuation.definition.character-class.end.perl name constant.other.character-class.set.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 #nested_parens_interpolated applyEndPatternLast 1 begin \b(?=(?<!\&)(s)(\s+\S|\s*[;\,\#\{\}\(\)\[<]|$)) comment string.regexp.replace.perl end ((([egimosxradlupc]*)))(?=(\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([^\sa-zA-Z0-9\[({<]).*\1([egimosxradlupc]*)([\}\)\;\,]|\s+)) comment string.regexp.replaceXXX end ((([egimosxradlupc]*)))(?=([\}\)\;\,]|\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*)([^\sa-zA-Z0-9\[({<]) 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 ([^\sa-zA-Z0-9\[({<]) 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 \2((([egimosradlupc]*x[egimosradlupc]*)))\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 '(?=[egimosradlupc]*x[egimosradlupc]*)\b name string.regexp.replace.extended.simple_delimiter.perl patterns include #escaped_char begin (.) captures 0 name punctuation.definition.string.perl end \1(?=[egimosradlupc]*x[egimosradlupc]*)\b name string.regexp.replace.extended.simple_delimiter.perl patterns include #escaped_char include #variable begin (?<=\(|\{|~|&)\s*((\/)) beginCaptures 1 name string.regexp.find.perl 2 name punctuation.definition.string.perl contentName string.regexp.find.perl end ((\1([egimosxradlupc]*)))(?=(\s+\S|\s*[;\,\#\{\}\)]|$)) endCaptures 1 name string.regexp.find.perl 2 name punctuation.definition.string.perl 3 name keyword.control.regexp-option.perl patterns comment This is to prevent thinks like /foo$/ to treat $/ as a variable match \$(?=\/) name keyword.control.anchor.perl include #escaped_char include #variable captures 1 name constant.other.key.perl match \b(\w+)\s*(?==>) match (?<={)\s*\w+\s*(?=}) name constant.other.bareword.perl captures 1 name keyword.control.perl 2 name entity.name.type.class.perl match ^\s*(package)\s+([^\s;]+) name meta.class.perl captures 1 name storage.type.sub.perl 2 name entity.name.function.perl 3 name storage.type.method.perl match \b(sub)(?:\s+([-a-zA-Z0-9_]+))?\s*(?:\([\$\@\*;]*\))?[^\w\{] 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|UNITCHECK|CHECK|INIT|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 8 name punctuation.definition.string.perl match \b(tr|y)\s*([^A-Za-z0-9\s])(.*?)(?<!\\)(\\{2})*(\2)(.*?)(?<!\\)(\\{2})*(\2) name string.regexp.replace.perl match \b(__FILE__|__LINE__|__PACKAGE__|__SUB__|__DATA__|__END__)\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|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|not)\b name keyword.operator.logical.perl match (<=>|=>|->) name keyword.operator.comparison.perl begin (((<<) *"HTML"))(.*)\n? captures 1 name punctuation.definition.string.perl 2 name string.unquoted.heredoc.doublequote.perl 3 name punctuation.definition.heredoc.perl 4 patterns include $self contentName text.html.embedded.perl end (^HTML$) patterns include #escaped_char include #variable include text.html.basic begin (((<<) *"XML"))(.*)\n? captures 1 name punctuation.definition.string.perl 2 name string.unquoted.heredoc.doublequote.perl 3 name punctuation.definition.heredoc.perl 4 patterns include $self contentName text.xml.embedded.perl end (^XML$) patterns include #escaped_char include #variable include text.xml begin (((<<) *"CSS"))(.*)\n? captures 1 name punctuation.definition.string.perl 2 name string.unquoted.heredoc.doublequote.perl 3 name punctuation.definition.heredoc.perl 4 patterns include $self contentName text.css.embedded.perl end (^CSS$) patterns include #escaped_char include #variable include source.css begin (((<<) *"JAVASCRIPT"))(.*)\n? captures 1 name punctuation.definition.string.perl 2 name string.unquoted.heredoc.doublequote.perl 3 name punctuation.definition.heredoc.perl 4 patterns include $self contentName text.js.embedded.perl end (^JAVASCRIPT$) patterns include #escaped_char include #variable include source.js begin (((<<) *"SQL"))(.*)\n? captures 1 name punctuation.definition.string.perl 2 name string.unquoted.heredoc.doublequote.perl 3 name punctuation.definition.heredoc.perl 4 patterns include $self contentName source.sql.embedded.perl end (^SQL$) patterns include #escaped_char include #variable include source.sql begin (((<<) *"POSTSCRIPT"))(.*)\n? captures 1 name punctuation.definition.string.perl 2 name string.unquoted.heredoc.doublequote.perl 3 name punctuation.definition.heredoc.perl 4 patterns include $self contentName text.postscript.embedded.perl end (^POSTSCRIPT$) patterns include #escaped_char include #variable include source.postscript begin (((<<) *"([^"]*)"))(.*)\n? captures 1 name punctuation.definition.string.perl 2 name string.unquoted.heredoc.doublequote.perl 3 name punctuation.definition.heredoc.perl 4 patterns include $self contentName string.unquoted.heredoc.doublequote.perl end (^\4$) patterns include #escaped_char include #variable begin (((<<) *'HTML'))(.*)\n? captures 1 name punctuation.definition.string.perl 2 name string.unquoted.heredoc.quote.perl 3 name punctuation.definition.heredoc.perl 4 patterns include $self contentName text.html.embedded.perl end (^HTML$) patterns include text.html.basic begin (((<<) *'XML'))(.*)\n? captures 1 name punctuation.definition.string.perl 2 name string.unquoted.heredoc.quote.perl 3 name punctuation.definition.heredoc.perl 4 patterns include $self contentName text.xml.embedded.perl end (^XML$) patterns include text.xml begin (((<<) *'CSS'))(.*)\n? captures 1 name punctuation.definition.string.perl 2 name string.unquoted.heredoc.quote.perl 3 name punctuation.definition.heredoc.perl 4 patterns include $self contentName text.css.embedded.perl end (^CSS$) patterns include source.css begin (((<<) *'JAVASCRIPT'))(.*)\n? captures 1 name punctuation.definition.string.perl 2 name string.unquoted.heredoc.quote.perl 3 name punctuation.definition.heredoc.perl 4 patterns include $self contentName text.js.embedded.perl end (^JAVASCRIPT$) patterns include source.js begin (((<<) *'SQL'))(.*)\n? captures 1 name punctuation.definition.string.perl 2 name string.unquoted.heredoc.quote.perl 3 name punctuation.definition.heredoc.perl 4 patterns include $self contentName source.sql.embedded.perl end (^SQL$) patterns include source.sql begin (((<<) *'POSTSCRIPT'))(.*)\n? captures 1 name punctuation.definition.string.perl 2 name string.unquoted.heredoc.quote.perl 3 name punctuation.definition.heredoc.perl 4 patterns include $self contentName source.postscript.embedded.perl end (^POSTSCRIPT$) patterns include source.postscript begin (((<<) *'([^']*)'))(.*)\n? captures 1 name punctuation.definition.string.perl 2 name string.unquoted.heredoc.quote.perl 3 name punctuation.definition.heredoc.perl 4 patterns include $self contentName string.unquoted.heredoc.quote.perl end (^\4$) begin (((<<) *\\((?![=\d\$\( ])[^;,'"`\s\)]*)))(.*)\n? captures 1 name punctuation.definition.string.perl 2 name string.unquoted.heredoc.quote.perl 3 name punctuation.definition.heredoc.perl 4 patterns include $self contentName string.unquoted.heredoc.quote.perl end (^\4$) begin (((<<) *`([^`]*)`))(.*)\n? captures 1 name punctuation.definition.string.perl 2 name string.unquoted.heredoc.backtick.perl 3 name punctuation.definition.heredoc.perl 4 patterns include $self contentName string.unquoted.heredoc.backtick.perl end (^\4$) patterns include #escaped_char include #variable begin (((<<) *HTML\b))(.*)\n? captures 1 name punctuation.definition.string.perl 2 name string.unquoted.heredoc.perl 3 name punctuation.definition.heredoc.perl 4 patterns include $self contentName text.html.embedded.perl end (^HTML$) patterns include #escaped_char include #variable include text.html.basic begin (((<<) *XML\b))(.*)\n? captures 1 name punctuation.definition.string.perl 2 name string.unquoted.heredoc.perl 3 name punctuation.definition.heredoc.perl 4 patterns include $self contentName text.xml.embedded.perl end (^XML$) patterns include #escaped_char include #variable include text.xml begin (((<<) *JAVASCRIPT\b))(.*)\n? captures 1 name punctuation.definition.string.perl 2 name string.unquoted.heredoc.perl 3 name punctuation.definition.heredoc.perl 4 patterns include $self contentName source.js.embedded.perl end (^JAVASCRIPT$) patterns include #escaped_char include #variable include source.js begin (((<<) *SQL\b))(.*)\n? captures 1 name punctuation.definition.string.perl 2 name string.unquoted.heredoc.perl 3 name punctuation.definition.heredoc.perl 4 patterns include $self contentName source.sql.embedded.perl end (^SQL$) patterns include #escaped_char include #variable include source.sql begin (((<<) *POSTSCRIPT\b))(.*)\n? captures 1 name punctuation.definition.string.perl 2 name string.unquoted.heredoc.perl 3 name punctuation.definition.heredoc.perl 4 patterns include $self contentName source.postscript.embedded.perl end (^POSTSCRIPT$) patterns include #escaped_char include #variable include source.postscript begin (((<<) *((?![=\d\$\( ])[^;,'"`\s\)]*)))(.*)\n? captures 1 name punctuation.definition.string.perl 2 name string.unquoted.heredoc.perl 3 name punctuation.definition.heredoc.perl 5 patterns include $self contentName string.unquoted.heredoc.perl end (^\4$) 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 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 #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 #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 #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 #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+(\w+)\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 captures 1 name support.function.perl 2 name entity.name.function.perl match \b(x)\s*(\d+)\b 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|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|quotemeta|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)\b name support.function.perl captures 1 name punctuation.section.scope.begin.perl 2 name punctuation.section.scope.end.perl comment Match empty brackets for ↩ snippet match (\{)(\}) captures 1 name punctuation.section.scope.begin.perl 2 name punctuation.section.scope.end.perl comment Match empty parenthesis for ↩ snippet match (\()(\)) repository escaped_char patterns match \\\d+ name constant.character.escape.perl match \\c[^\s\\] name constant.character.escape.perl match \\g(?:\{(?:\w*|-\d+)\}|\d+) name constant.character.escape.perl match \\k(?:\{\w*\}|<\w*>|'\w*') name constant.character.escape.perl match \\N\{[^\}]*\} name constant.character.escape.perl match \\o\{\d*\} name constant.character.escape.perl match \\(?:p|P)(?:\{\w*\}|P) name constant.character.escape.perl match \\x(?:[0-9a-zA-Z]{2}|\{\w*\})? name constant.character.escape.perl match \\. name constant.character.escape.perl line_comment patterns begin (^[ \t]+)?(?=#) beginCaptures 1 name punctuation.whitespace.comment.leading.perl end (?!\G) patterns begin # beginCaptures 0 name punctuation.definition.comment.perl end \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