Skip to content

Instantly share code, notes, and snippets.

@stevan
Created September 19, 2018 18:14
Show Gist options
  • Save stevan/33a4ef63dbc7ed075259e57f2c8e3bfb to your computer and use it in GitHub Desktop.
Save stevan/33a4ef63dbc7ed075259e57f2c8e3bfb to your computer and use it in GitHub Desktop.
Slightly tweaked Perl and Modern Perl Sublime/TextMate Syntax files that handle syntax for decorators.pm
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<!--
This file was generated automatically by yaml2plist.pl from ModernPerl.tmLanguage.yaml.ep.
DO NOT edit this file directly. Instead, use yaml2plist.pl to generate it.
-->
<plist version="1.0">
<dict>
<key>comment</key>
<string>Blaise Roth &lt;[email protected]&gt;</string>
<key>fileTypes</key>
<array>
<string>pl</string>
<string>PL</string>
<string>pm</string>
<string>pod</string>
<string>t</string>
</array>
<key>firstLineMatch</key>
<string>^#!.*\bperl\b</string>
<key>name</key>
<string>ModernPerl</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#line_comment</string>
</dict>
<dict>
<key>include</key>
<string>#pod</string>
</dict>
<dict>
<key>comment</key>
<string>These would otherwise be highlighted as variables or regex, but they're more likely to be an operator (or two).</string>
<key>match</key>
<string><![CDATA[(?x) [&%*][!\-~=] | && | \*\* | //]]></string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.function.sigil.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.var.perl</string>
</dict>
</dict>
<key>match</key>
<string><![CDATA[(?x)
( & \g<identifier> )
|
(
\$\# (?:\$\s*)* \g<normal_identifier>
|
(?: [@$] \s* | [%*] )
(?<identifier>
(?:\$\s*)*
(?:
# digit variable like $2
(
\d+
|
(?:::)+ \d+ (?!\w|::|'[^\W\d])
)
|
{ \s* \g<-1> \s* }
|
(?<normal_identifier> # normal variable like $foo::bar'baz
(
(?:
(?:::|'?[^\W\d]) \w*
)++
)
|
{ \s* \g<-1> \s* }
)
|
# caret variable like $^W or ${^Word}
(\^ [^\W\d\p{Lower}])
|
{ \s* \g<-1> \w* \s* }
|
# punctuation variable like $[
([^[^!-~]{\w\s])
|
{ \s* \g<-1> \s* }
|
# just highlight the sigil for something like ${ +arbitrary }
(?={)
)
)
|
# these characters aren't another operator, so always highlight them as sigils
[@$] \s*
)
]]></string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.language.string.perl</string>
</dict>
</dict>
<key>comment</key>
<string>Turns out this operator needs to be really high up. It always autoquotes word characters. It even autoquotes q=&gt;=, making it almost impossible to have a literal &gt; at position 0 of a q==! There is a way, though! CORE::q=&gt;=. There's always a way!</string>
<key>match</key>
<string>(-?\b[^\W\d]\w*\??+)\s*+=&gt;</string>
</dict>
<dict>
<key>begin</key>
<string>(?x)
\b ( (?:CORE::)? qw? ) \s*
(?:
( (\() | (&lt;) | (\[) | ({) ) | ([^[^!-~]\w\s])
)
|
(')
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
<key>8</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>contentName</key>
<string>string.quoted.single.perl</string>
<key>end</key>
<string>(?x)
(?:
((?!\3)\)|(?!\4)&gt;|(?!\5)\]|(?!\6)})
|
([\7\8[&amp;&amp;]])
)
</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
</dict>
<key>name</key>
<string>meta.string.q.perl</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x)
\b ( (?:CORE::)? qq ) \s*
(?:
( (\() | (&lt;) | (\[) | ({) ) | ([^[^!-~]\w\s])
)
|
(")
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
<key>8</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>contentName</key>
<string>string.quoted.double.perl</string>
<key>end</key>
<string>(?x)
(?:
((?!\3)\)|(?!\4)&gt;|(?!\5)\]|(?!\6)})
|
([\7\8[&amp;&amp;]])
)
</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
</dict>
<key>name</key>
<string>meta.string.qq.perl</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x)
\b ( (?:CORE::)? qx ) \s*
(?:
( (\() | (&lt;) | (\[) | ({) ) | ([^[^!-~]\w\s])
)
|
(`)
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
<key>8</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>contentName</key>
<string>string.interpolated.perl</string>
<key>end</key>
<string>(?x)
(?:
((?!\3)\)|(?!\4)&gt;|(?!\5)\]|(?!\6)})
|
([\7\8[&amp;&amp;]])
)
</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
</dict>
<key>name</key>
<string>meta.string.qx.perl</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?&lt;=')</string>
<key>end</key>
<string>(?=')</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#double</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x)
\b ( (?:CORE::)? qr ) \s*
(?:
( (\() | (&lt;) | (\[) | ({) ) | ([^[^!-~]\w\s])
)
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>contentName</key>
<string>string.regexp.perl</string>
<key>end</key>
<string>(?x)
(?:
((?!\3)\)|(?!\4)&gt;|(?!\5)\]|(?!\6)})
|
([\7[&amp;&amp;]])
)
([adilmnopsux]*) (\w*)
</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>name</key>
<string>meta.regexp.qr.perl</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?&lt;=')</string>
<key>end</key>
<string>(?=')</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#double_regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string><![CDATA[(?x)
\b ( (?:CORE::)? m ) \s*
(?:
( (\() | (<) | (\[) | ({) ) | ([^[^!-~]\w\s])
)
|
# Guessing whether a / is a division or the start of a regex is pretty tricky!
(?=\s*/) # optimisation to fail faster
(?:
# punctuation to expect before a /regex/
(?<=[^[^!-~]\w\s])
(?:
(?<=
# binding operators - definitely a regex
[=!~]~
|
# probably a regex
[,;!({\[] | => | && | \|\|
)
|
# assignment - but not a mutator, comparison, or variable
(?<= = )
(?<! [*/%%%x+\-.=!<>&|^@$] = )
)
|
# named operators you'd expect before a /regex/
\b
(?:
# never gonna be perfect with the limitations of lookbehinds, but this is close
(?<= if | or )
(?: (?<=CORE::.{2}) (?<![\w'@$&*%].{8}|::.{8}|->.{8}) | (?<![\w'@$&*%].{2}|::.{2}|->.{2}) )
|
(?<= and | die | for | not | say | xor )
(?: (?<=CORE::.{3}) (?<![\w'@$&*%].{9}|::.{9}|->.{9}) | (?<![\w'@$&*%].{3}|::.{3}|->.{3}) )
|
(?<= exit | warn | when )
(?: (?<=CORE::.{4}) (?<![\w'@$&*%].{10}|::.{10}|->.{10}) | (?<![\w'@$&*%].{4}|::.{4}|->.{4}) )
|
(?<= print | split | until | while )
(?: (?<=CORE::.{5}) (?<![\w'@$&*%].{11}|::.{11}|->.{11}) | (?<![\w'@$&*%].{5}|::.{5}|->.{5}) )
|
(?<= return | unless )
(?: (?<=CORE::.{6}) (?<![\w'@$&*%].{12}|::.{12}|->.{12}) | (?<![\w'@$&*%].{6}|::.{6}|->.{6}) )
|
(?<= defined | foreach )
(?: (?<=CORE::.{7}) (?<![\w'@$&*%].{13}|::.{13}|->.{13}) | (?<![\w'@$&*%].{7}|::.{7}|->.{7}) )
)
)
\s*+ (\/)
|
# otherwise we can try for a single line /regex/ if it's after space
(\/) (?<=\s/|^/)
(?=
(?:
# something like / / is pretty common
\s+
|
# this means no spaces at the start or end unless they're backslashed
# so /\ woo regex\ / works
(?!\s)
(?: [^\\/] | \\. )*
(?: [^\\/\s] | \\. )
)
\/
)
]]></string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
<key>8</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
<key>9</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>contentName</key>
<string>string.regexp.perl</string>
<key>end</key>
<string>(?x)
(?:
((?!\3)\)|(?!\4)&gt;|(?!\5)\]|(?!\6)})
|
([\7\8\9[&amp;&amp;]])
)
([acdgilmnopsux]*) (\w*)
</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>name</key>
<string>meta.regexp.m.perl</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?&lt;=')</string>
<key>end</key>
<string>(?=')</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#double_regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) \b (?= ( (?:CORE::)? s ) \s* ([^[^!-~]\w\s]) )</string>
<key>end</key>
<string>(?!\b\1\s*\2)</string>
<key>name</key>
<string>meta.regexp.s.perl</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \! )</string>
<key>end</key>
<string>(?x) (\!) ([acdegilmnoprsux]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\!)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\!)
(?:
(?! \g<3> \! )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\!)</string>
<key>end</key>
<string>(?=\!)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \" )</string>
<key>end</key>
<string>(?x) (\") ([acdegilmnoprsux]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\")</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\")
(?:
(?! \g<3> \" )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\")</string>
<key>end</key>
<string>(?=\")</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \# )</string>
<key>end</key>
<string>(?x) (\#) ([acdegilmnoprsux]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\#)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\#)
(?:
(?! \g<3> \# )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\#)</string>
<key>end</key>
<string>(?=\#)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \$ )</string>
<key>end</key>
<string>(?x) (\$) ([acdegilmnoprsux]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\$)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\$)
(?:
(?! \g<3> \$ )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\$)</string>
<key>end</key>
<string>(?=\$)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \% )</string>
<key>end</key>
<string>(?x) (\%) ([acdegilmnoprsux]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\%)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\%)
(?:
(?! \g<3> \% )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\%)</string>
<key>end</key>
<string>(?=\%)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \&amp; )</string>
<key>end</key>
<string>(?x) (\&amp;) ([acdegilmnoprsux]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\&amp;)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\&)
(?:
(?! \g<3> \& )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\&amp;)</string>
<key>end</key>
<string>(?=\&amp;)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \' )</string>
<key>end</key>
<string>(?x) (\') ([acdegilmnoprsux]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\')</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\')
(?:
(?! \g<3> \' )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\')</string>
<key>end</key>
<string>(?=\')</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\()</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string></string>
</dict>
</dict>
<key>end</key>
<string>(?x)
(?&lt;!\()(?!\))
(?:
(?&lt;!\)|^)
(?:
(?&lt;![^\W[acdegilmnoprsux]])
([acdegilmnoprsux]*)
)?
(\w*)
)?
</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) (\)) (?: \s+ (\#.*) )? \s* \n</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>comment.line.number-sign.perl</string>
</dict>
</dict>
<key>end</key>
<string>(?x)
(?:
(?&lt;=\S)
|
(?= ^ \s*+ [[^!-~]\w] )
)
(?:
(?&lt;=\))
(?: ([acdegilmnoprsux]) | (\w) )
)?
\)*
</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>comment.line.number-sign.perl</string>
</dict>
</dict>
<key>match</key>
<string>(?x) ^ \s* (\#.*)? \n</string>
</dict>
<dict>
<key>begin</key>
<string>(?x)
^ \s*
(?:
( (\() | (&lt;) | (\[) | ({) ) | ([^[^!-~]\w\s])
)
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string>((?!\2)\)|(?!\3)&gt;|(?!\4)\]|(?!\5)})|([\6[&amp;&amp;]])</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x)
(\)) \s*
(?:
( (\() | (&lt;) | (\[) | ({) ) | ([^[^!-~]\w\s])
)
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(?:
((?!\3)\)|(?!\4)>|(?!\5)\]|(?!\6)})|([\7[&&]])
)
(?:
(?<=\))
(?: ([acdegilmnoprsux]) | (\w) )
)?
\)*
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>\)</string>
<key>name</key>
<string></string>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\()</string>
<key>end</key>
<string>(?=\))</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \) )</string>
<key>end</key>
<string>(?x) (\)) ([acdegilmnoprsux]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\))</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\))
(?:
(?! \g<3> \) )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\))</string>
<key>end</key>
<string>(?=\))</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \* )</string>
<key>end</key>
<string>(?x) (\*) ([acdegilmnoprsux]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\*)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\*)
(?:
(?! \g<3> \* )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\*)</string>
<key>end</key>
<string>(?=\*)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \+ )</string>
<key>end</key>
<string>(?x) (\+) ([acdegilmnoprsux]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\+)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\+)
(?:
(?! \g<3> \+ )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\+)</string>
<key>end</key>
<string>(?=\+)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \, )</string>
<key>end</key>
<string>(?x) (\,) ([acdegilmnoprsux]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\,)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\,)
(?:
(?! \g<3> \, )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\,)</string>
<key>end</key>
<string>(?=\,)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \- )</string>
<key>end</key>
<string>(?x) (\-) ([acdegilmnoprsux]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\-)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\-)
(?:
(?! \g<3> \- )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\-)</string>
<key>end</key>
<string>(?=\-)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \. )</string>
<key>end</key>
<string>(?x) (\.) ([acdegilmnoprsux]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\.)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\.)
(?:
(?! \g<3> \. )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\.)</string>
<key>end</key>
<string>(?=\.)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \/ )</string>
<key>end</key>
<string>(?x) (\/) ([acdegilmnoprsux]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\/)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\/)
(?:
(?! \g<3> \/ )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\/)</string>
<key>end</key>
<string>(?=\/)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \: )</string>
<key>end</key>
<string>(?x) (\:) ([acdegilmnoprsux]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\:)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\:)
(?:
(?! \g<3> \: )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\:)</string>
<key>end</key>
<string>(?=\:)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \; )</string>
<key>end</key>
<string>(?x) (\;) ([acdegilmnoprsux]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\;)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\;)
(?:
(?! \g<3> \; )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\;)</string>
<key>end</key>
<string>(?=\;)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\&lt;)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string></string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(?<!\<)(?!\>)
(?:
(?<!\>|^)
(?:
(?<![^\W[acdegilmnoprsux]])
([acdegilmnoprsux]*)
)?
(\w*)
)?
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) (\&gt;) (?: \s+ (\#.*) )? \s* \n</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>comment.line.number-sign.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(?:
(?<=\S)
|
(?= ^ \s*+ [[^!-~]\w] )
)
(?:
(?<=\>)
(?: ([acdegilmnoprsux]) | (\w) )
)?
\>*
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>comment.line.number-sign.perl</string>
</dict>
</dict>
<key>match</key>
<string>(?x) ^ \s* (\#.*)? \n</string>
</dict>
<dict>
<key>begin</key>
<string>(?x)
^ \s*
(?:
( (\() | (&lt;) | (\[) | ({) ) | ([^[^!-~]\w\s])
)
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string>((?!\2)\)|(?!\3)&gt;|(?!\4)\]|(?!\5)})|([\6[&amp;&amp;]])</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x)
(\&gt;) \s*
(?:
( (\() | (&lt;) | (\[) | ({) ) | ([^[^!-~]\w\s])
)
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(?:
((?!\3)\)|(?!\4)>|(?!\5)\]|(?!\6)})|([\7[&&]])
)
(?:
(?<=\>)
(?: ([acdegilmnoprsux]) | (\w) )
)?
\>*
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>\&gt;</string>
<key>name</key>
<string></string>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\&lt;)</string>
<key>end</key>
<string>(?=\&gt;)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \= )</string>
<key>end</key>
<string>(?x) (\=) ([acdegilmnoprsux]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\=)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\=)
(?:
(?! \g<3> \= )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\=)</string>
<key>end</key>
<string>(?=\=)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \&gt; )</string>
<key>end</key>
<string>(?x) (\&gt;) ([acdegilmnoprsux]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\&gt;)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\>)
(?:
(?! \g<3> \> )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\&gt;)</string>
<key>end</key>
<string>(?=\&gt;)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \? )</string>
<key>end</key>
<string>(?x) (\?) ([acdegilmnoprsux]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\?)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\?)
(?:
(?! \g<3> \? )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\?)</string>
<key>end</key>
<string>(?=\?)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \@ )</string>
<key>end</key>
<string>(?x) (\@) ([acdegilmnoprsux]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\@)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\@)
(?:
(?! \g<3> \@ )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\@)</string>
<key>end</key>
<string>(?=\@)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\[)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string></string>
</dict>
</dict>
<key>end</key>
<string>(?x)
(?&lt;!\[)(?!\])
(?:
(?&lt;!\]|^)
(?:
(?&lt;![^\W[acdegilmnoprsux]])
([acdegilmnoprsux]*)
)?
(\w*)
)?
</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) (\]) (?: \s+ (\#.*) )? \s* \n</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>comment.line.number-sign.perl</string>
</dict>
</dict>
<key>end</key>
<string>(?x)
(?:
(?&lt;=\S)
|
(?= ^ \s*+ [[^!-~]\w] )
)
(?:
(?&lt;=\])
(?: ([acdegilmnoprsux]) | (\w) )
)?
\]*
</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>comment.line.number-sign.perl</string>
</dict>
</dict>
<key>match</key>
<string>(?x) ^ \s* (\#.*)? \n</string>
</dict>
<dict>
<key>begin</key>
<string>(?x)
^ \s*
(?:
( (\() | (&lt;) | (\[) | ({) ) | ([^[^!-~]\w\s])
)
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string>((?!\2)\)|(?!\3)&gt;|(?!\4)\]|(?!\5)})|([\6[&amp;&amp;]])</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x)
(\]) \s*
(?:
( (\() | (&lt;) | (\[) | ({) ) | ([^[^!-~]\w\s])
)
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(?:
((?!\3)\)|(?!\4)>|(?!\5)\]|(?!\6)})|([\7[&&]])
)
(?:
(?<=\])
(?: ([acdegilmnoprsux]) | (\w) )
)?
\]*
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>\]</string>
<key>name</key>
<string></string>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\[)</string>
<key>end</key>
<string>(?=\])</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \\ )</string>
<key>end</key>
<string>(?x) (\\) ([acdegilmnoprsux]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\\)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\\)
(?:
(?! \g<3> \\ )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\\)</string>
<key>end</key>
<string>(?=\\)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \] )</string>
<key>end</key>
<string>(?x) (\]) ([acdegilmnoprsux]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\])</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\])
(?:
(?! \g<3> \] )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\])</string>
<key>end</key>
<string>(?=\])</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \^ )</string>
<key>end</key>
<string>(?x) (\^) ([acdegilmnoprsux]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\^)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\^)
(?:
(?! \g<3> \^ )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\^)</string>
<key>end</key>
<string>(?=\^)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \` )</string>
<key>end</key>
<string>(?x) (\`) ([acdegilmnoprsux]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\`)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\`)
(?:
(?! \g<3> \` )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\`)</string>
<key>end</key>
<string>(?=\`)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\{)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string></string>
</dict>
</dict>
<key>end</key>
<string>(?x)
(?&lt;!\{)(?!\})
(?:
(?&lt;!\}|^)
(?:
(?&lt;![^\W[acdegilmnoprsux]])
([acdegilmnoprsux]*)
)?
(\w*)
)?
</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) (\}) (?: \s+ (\#.*) )? \s* \n</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>comment.line.number-sign.perl</string>
</dict>
</dict>
<key>end</key>
<string>(?x)
(?:
(?&lt;=\S)
|
(?= ^ \s*+ [[^!-~]\w] )
)
(?:
(?&lt;=\})
(?: ([acdegilmnoprsux]) | (\w) )
)?
\}*
</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>comment.line.number-sign.perl</string>
</dict>
</dict>
<key>match</key>
<string>(?x) ^ \s* (\#.*)? \n</string>
</dict>
<dict>
<key>begin</key>
<string>(?x)
^ \s*
(?:
( (\() | (&lt;) | (\[) | ({) ) | ([^[^!-~]\w\s])
)
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string>((?!\2)\)|(?!\3)&gt;|(?!\4)\]|(?!\5)})|([\6[&amp;&amp;]])</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x)
(\}) \s*
(?:
( (\() | (&lt;) | (\[) | ({) ) | ([^[^!-~]\w\s])
)
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(?:
((?!\3)\)|(?!\4)>|(?!\5)\]|(?!\6)})|([\7[&&]])
)
(?:
(?<=\})
(?: ([acdegilmnoprsux]) | (\w) )
)?
\}*
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>\}</string>
<key>name</key>
<string></string>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\{)</string>
<key>end</key>
<string>(?=\})</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \| )</string>
<key>end</key>
<string>(?x) (\|) ([acdegilmnoprsux]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\|)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\|)
(?:
(?! \g<3> \| )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\|)</string>
<key>end</key>
<string>(?=\|)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \} )</string>
<key>end</key>
<string>(?x) (\}) ([acdegilmnoprsux]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\})</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\})
(?:
(?! \g<3> \} )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\})</string>
<key>end</key>
<string>(?=\})</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \~ )</string>
<key>end</key>
<string>(?x) (\~) ([acdegilmnoprsux]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\~)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\~)
(?:
(?! \g<3> \~ )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single_regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\~)</string>
<key>end</key>
<string>(?=\~)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) \b (?= ( (?:CORE::)? (?:tr|y) ) \s* ([^[^!-~]\w\s]) )</string>
<key>end</key>
<string>(?!\b\1\s*\2)</string>
<key>name</key>
<string>meta.tr.perl</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \! )</string>
<key>end</key>
<string>(?x) (\!) ([cdrs]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\!)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\!)
(?:
(?! \g<3> \! )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\!)</string>
<key>end</key>
<string>(?=\!)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \" )</string>
<key>end</key>
<string>(?x) (\") ([cdrs]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\")</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\")
(?:
(?! \g<3> \" )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\")</string>
<key>end</key>
<string>(?=\")</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \# )</string>
<key>end</key>
<string>(?x) (\#) ([cdrs]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\#)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\#)
(?:
(?! \g<3> \# )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\#)</string>
<key>end</key>
<string>(?=\#)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \$ )</string>
<key>end</key>
<string>(?x) (\$) ([cdrs]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\$)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\$)
(?:
(?! \g<3> \$ )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\$)</string>
<key>end</key>
<string>(?=\$)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \% )</string>
<key>end</key>
<string>(?x) (\%) ([cdrs]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\%)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\%)
(?:
(?! \g<3> \% )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\%)</string>
<key>end</key>
<string>(?=\%)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \&amp; )</string>
<key>end</key>
<string>(?x) (\&amp;) ([cdrs]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\&amp;)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\&)
(?:
(?! \g<3> \& )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\&amp;)</string>
<key>end</key>
<string>(?=\&amp;)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \' )</string>
<key>end</key>
<string>(?x) (\') ([cdrs]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\')</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\')
(?:
(?! \g<3> \' )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\')</string>
<key>end</key>
<string>(?=\')</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\()</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string></string>
</dict>
</dict>
<key>end</key>
<string>(?x)
(?&lt;!\()(?!\))
(?:
(?&lt;!\)|^)
(?:
(?&lt;![^\W[cdrs]])
([cdrs]*)
)?
(\w*)
)?
</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) (\)) (?: \s+ (\#.*) )? \s* \n</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>comment.line.number-sign.perl</string>
</dict>
</dict>
<key>end</key>
<string>(?x)
(?:
(?&lt;=\S)
|
(?= ^ \s*+ [[^!-~]\w] )
)
(?:
(?&lt;=\))
(?: ([cdrs]) | (\w) )
)?
\)*
</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>comment.line.number-sign.perl</string>
</dict>
</dict>
<key>match</key>
<string>(?x) ^ \s* (\#.*)? \n</string>
</dict>
<dict>
<key>begin</key>
<string>(?x)
^ \s*
(?:
( (\() | (&lt;) | (\[) | ({) ) | ([^[^!-~]\w\s])
)
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string>((?!\2)\)|(?!\3)&gt;|(?!\4)\]|(?!\5)})|([\6[&amp;&amp;]])</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x)
(\)) \s*
(?:
( (\() | (&lt;) | (\[) | ({) ) | ([^[^!-~]\w\s])
)
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(?:
((?!\3)\)|(?!\4)>|(?!\5)\]|(?!\6)})|([\7[&&]])
)
(?:
(?<=\))
(?: ([cdrs]) | (\w) )
)?
\)*
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>\)</string>
<key>name</key>
<string></string>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\()</string>
<key>end</key>
<string>(?=\))</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \) )</string>
<key>end</key>
<string>(?x) (\)) ([cdrs]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\))</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\))
(?:
(?! \g<3> \) )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\))</string>
<key>end</key>
<string>(?=\))</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \* )</string>
<key>end</key>
<string>(?x) (\*) ([cdrs]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\*)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\*)
(?:
(?! \g<3> \* )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\*)</string>
<key>end</key>
<string>(?=\*)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \+ )</string>
<key>end</key>
<string>(?x) (\+) ([cdrs]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\+)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\+)
(?:
(?! \g<3> \+ )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\+)</string>
<key>end</key>
<string>(?=\+)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \, )</string>
<key>end</key>
<string>(?x) (\,) ([cdrs]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\,)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\,)
(?:
(?! \g<3> \, )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\,)</string>
<key>end</key>
<string>(?=\,)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \- )</string>
<key>end</key>
<string>(?x) (\-) ([cdrs]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\-)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\-)
(?:
(?! \g<3> \- )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\-)</string>
<key>end</key>
<string>(?=\-)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \. )</string>
<key>end</key>
<string>(?x) (\.) ([cdrs]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\.)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\.)
(?:
(?! \g<3> \. )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\.)</string>
<key>end</key>
<string>(?=\.)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \/ )</string>
<key>end</key>
<string>(?x) (\/) ([cdrs]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\/)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\/)
(?:
(?! \g<3> \/ )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\/)</string>
<key>end</key>
<string>(?=\/)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \: )</string>
<key>end</key>
<string>(?x) (\:) ([cdrs]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\:)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\:)
(?:
(?! \g<3> \: )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\:)</string>
<key>end</key>
<string>(?=\:)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \; )</string>
<key>end</key>
<string>(?x) (\;) ([cdrs]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\;)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\;)
(?:
(?! \g<3> \; )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\;)</string>
<key>end</key>
<string>(?=\;)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\&lt;)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string></string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(?<!\<)(?!\>)
(?:
(?<!\>|^)
(?:
(?<![^\W[cdrs]])
([cdrs]*)
)?
(\w*)
)?
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) (\&gt;) (?: \s+ (\#.*) )? \s* \n</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>comment.line.number-sign.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(?:
(?<=\S)
|
(?= ^ \s*+ [[^!-~]\w] )
)
(?:
(?<=\>)
(?: ([cdrs]) | (\w) )
)?
\>*
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>comment.line.number-sign.perl</string>
</dict>
</dict>
<key>match</key>
<string>(?x) ^ \s* (\#.*)? \n</string>
</dict>
<dict>
<key>begin</key>
<string>(?x)
^ \s*
(?:
( (\() | (&lt;) | (\[) | ({) ) | ([^[^!-~]\w\s])
)
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string>((?!\2)\)|(?!\3)&gt;|(?!\4)\]|(?!\5)})|([\6[&amp;&amp;]])</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x)
(\&gt;) \s*
(?:
( (\() | (&lt;) | (\[) | ({) ) | ([^[^!-~]\w\s])
)
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(?:
((?!\3)\)|(?!\4)>|(?!\5)\]|(?!\6)})|([\7[&&]])
)
(?:
(?<=\>)
(?: ([cdrs]) | (\w) )
)?
\>*
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>\&gt;</string>
<key>name</key>
<string></string>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\&lt;)</string>
<key>end</key>
<string>(?=\&gt;)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \= )</string>
<key>end</key>
<string>(?x) (\=) ([cdrs]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\=)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\=)
(?:
(?! \g<3> \= )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\=)</string>
<key>end</key>
<string>(?=\=)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \&gt; )</string>
<key>end</key>
<string>(?x) (\&gt;) ([cdrs]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\&gt;)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\>)
(?:
(?! \g<3> \> )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\&gt;)</string>
<key>end</key>
<string>(?=\&gt;)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \? )</string>
<key>end</key>
<string>(?x) (\?) ([cdrs]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\?)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\?)
(?:
(?! \g<3> \? )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\?)</string>
<key>end</key>
<string>(?=\?)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \@ )</string>
<key>end</key>
<string>(?x) (\@) ([cdrs]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\@)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\@)
(?:
(?! \g<3> \@ )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\@)</string>
<key>end</key>
<string>(?=\@)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\[)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string></string>
</dict>
</dict>
<key>end</key>
<string>(?x)
(?&lt;!\[)(?!\])
(?:
(?&lt;!\]|^)
(?:
(?&lt;![^\W[cdrs]])
([cdrs]*)
)?
(\w*)
)?
</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) (\]) (?: \s+ (\#.*) )? \s* \n</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>comment.line.number-sign.perl</string>
</dict>
</dict>
<key>end</key>
<string>(?x)
(?:
(?&lt;=\S)
|
(?= ^ \s*+ [[^!-~]\w] )
)
(?:
(?&lt;=\])
(?: ([cdrs]) | (\w) )
)?
\]*
</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>comment.line.number-sign.perl</string>
</dict>
</dict>
<key>match</key>
<string>(?x) ^ \s* (\#.*)? \n</string>
</dict>
<dict>
<key>begin</key>
<string>(?x)
^ \s*
(?:
( (\() | (&lt;) | (\[) | ({) ) | ([^[^!-~]\w\s])
)
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string>((?!\2)\)|(?!\3)&gt;|(?!\4)\]|(?!\5)})|([\6[&amp;&amp;]])</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x)
(\]) \s*
(?:
( (\() | (&lt;) | (\[) | ({) ) | ([^[^!-~]\w\s])
)
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(?:
((?!\3)\)|(?!\4)>|(?!\5)\]|(?!\6)})|([\7[&&]])
)
(?:
(?<=\])
(?: ([cdrs]) | (\w) )
)?
\]*
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>\]</string>
<key>name</key>
<string></string>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\[)</string>
<key>end</key>
<string>(?=\])</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \\ )</string>
<key>end</key>
<string>(?x) (\\) ([cdrs]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\\)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\\)
(?:
(?! \g<3> \\ )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\\)</string>
<key>end</key>
<string>(?=\\)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \] )</string>
<key>end</key>
<string>(?x) (\]) ([cdrs]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\])</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\])
(?:
(?! \g<3> \] )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\])</string>
<key>end</key>
<string>(?=\])</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \^ )</string>
<key>end</key>
<string>(?x) (\^) ([cdrs]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\^)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\^)
(?:
(?! \g<3> \^ )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\^)</string>
<key>end</key>
<string>(?=\^)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \` )</string>
<key>end</key>
<string>(?x) (\`) ([cdrs]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\`)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\`)
(?:
(?! \g<3> \` )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\`)</string>
<key>end</key>
<string>(?=\`)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\{)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string></string>
</dict>
</dict>
<key>end</key>
<string>(?x)
(?&lt;!\{)(?!\})
(?:
(?&lt;!\}|^)
(?:
(?&lt;![^\W[cdrs]])
([cdrs]*)
)?
(\w*)
)?
</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) (\}) (?: \s+ (\#.*) )? \s* \n</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>comment.line.number-sign.perl</string>
</dict>
</dict>
<key>end</key>
<string>(?x)
(?:
(?&lt;=\S)
|
(?= ^ \s*+ [[^!-~]\w] )
)
(?:
(?&lt;=\})
(?: ([cdrs]) | (\w) )
)?
\}*
</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>comment.line.number-sign.perl</string>
</dict>
</dict>
<key>match</key>
<string>(?x) ^ \s* (\#.*)? \n</string>
</dict>
<dict>
<key>begin</key>
<string>(?x)
^ \s*
(?:
( (\() | (&lt;) | (\[) | ({) ) | ([^[^!-~]\w\s])
)
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string>((?!\2)\)|(?!\3)&gt;|(?!\4)\]|(?!\5)})|([\6[&amp;&amp;]])</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x)
(\}) \s*
(?:
( (\() | (&lt;) | (\[) | ({) ) | ([^[^!-~]\w\s])
)
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(?:
((?!\3)\)|(?!\4)>|(?!\5)\]|(?!\6)})|([\7[&&]])
)
(?:
(?<=\})
(?: ([cdrs]) | (\w) )
)?
\}*
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string></string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>\}</string>
<key>name</key>
<string></string>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\{)</string>
<key>end</key>
<string>(?=\})</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \| )</string>
<key>end</key>
<string>(?x) (\|) ([cdrs]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\|)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\|)
(?:
(?! \g<3> \| )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\|)</string>
<key>end</key>
<string>(?=\|)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \} )</string>
<key>end</key>
<string>(?x) (\}) ([cdrs]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\})</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\})
(?:
(?! \g<3> \} )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\})</string>
<key>end</key>
<string>(?=\})</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x) (?= (?:CORE::)?+ \w+ \s* \~ )</string>
<key>end</key>
<string>(?x) (\~) ([cdrs]*) (\w*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x) ( (?:CORE::)?+ \w+ ) \s* (\~)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string><![CDATA[(?x)
(\~)
(?:
(?! \g<3> \~ )
|
(?<=')(\g<3>)
|
( \w+ \s* )
)
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl punctuation.definition.string.end.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\~)</string>
<key>end</key>
<string>(?=\~)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_or_single</string>
</dict>
</array>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#heredoc_1</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
</dict>
<key>match</key>
<string><![CDATA[(?x)
<
(?<! <<)
(?! [\s=])
(
(?:
\s* (?: [^<>=$\s\\]+ | \\. | [=$] (?! [>]) )
)*+
)
>
(?! [>=])
]]></string>
<key>name</key>
<string>meta.string.glob</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.language.string.perl</string>
</dict>
</dict>
<key>match</key>
<string>(?x)
{(
\s* (-?[^\W\d]\w*)
|
\g&lt;-1&gt; \s*
)}
</string>
</dict>
<dict>
<key>begin</key>
<string>(?x)
(?:
\b (?:CORE::)? __(?:END|DATA)__ (?!\w|::|'[^\W\d])
|
[\cD\cZ]
)
[\d\D]*
</string>
<key>end</key>
<string>(?!) # the end has no end</string>
<key>name</key>
<string>comment.block.perl</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#pod</string>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>\b(?:CORE::)?__(?:END|DATA|FILE|LINE|PACKAGE|SUB)__(?!\w|::|'[^\W\d])</string>
<key>name</key>
<string>constant.language.token.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>constant.language.label.perl</string>
</dict>
</dict>
<key>match</key>
<string>(?x)
\b ( (?:CORE::)? (?:dump|goto|last|next|redo) )
#
(?:
# open parens or space
(?: \s* (?:\(\s*)+ | \s+ )
#
# LABEL
([^\W\d\p{Lower}][^\W\p{Lower}]*)
)?
#
(?!\w|::|'[^\W\d])
</string>
<key>name</key>
<string>meta.control.labelled.perl</string>
</dict>
<dict>
<key>match</key>
<string>\belse\s+if(?!\w|::|'[^\W\d])</string>
<key>name</key>
<string>invalid.illegal.else_if.perl</string>
</dict>
<dict>
<key>match</key>
<string>\b(?:CORE::)?(?:break|continue|default|dump|else|elsif|for|foreach|given|goto|if|last|next|redo|return|unless|until|when|while)(?!\w|::|'[^\W\d])</string>
<key>name</key>
<string>keyword.control.perl</string>
</dict>
<dict>
<key>match</key>
<string>\b(?:CORE::)?(?:local|my|our|state)(?!\w|::|'[^\W\d])</string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>\b(?:CORE::)?(?:m|q|qq|qr|qw|qx|s|tr|y)\b</string>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<dict>
<key>match</key>
<string>\b(?:CORE::)?(?:and|cmp|or|xor|not|lt|gt|le|ge|eq|ne|x)(?!\w|::|'[^\W\d])</string>
<key>name</key>
<string>keyword.other.operator.perl</string>
</dict>
<dict>
<key>begin</key>
<string>(?x)
\b ( (?:CORE::)? format )
#
(?:
# format picture - copied from variable
(?: \s+
((?!')(?:(?:::|'?[^\W\d])\w*)++)
(?= \s* (?:=\s*)? $ )
)
|
(?!\w|::|'[^\W\d])
)
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>constant.language.filehandle.perl</string>
</dict>
</dict>
<key>end</key>
<string>(?x)
(?! \s* (?:=\s*)? $ )
|
^\.\s*$
</string>
<key>name</key>
<string>meta.format.perl</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>=\s*</string>
<key>contentName</key>
<string>string.unquoted.perl</string>
<key>end</key>
<string>(?=^\.\s*$)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#line_comment</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.package.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.type.class.perl constant.language.string.perl</string>
</dict>
</dict>
<key>match</key>
<string>(?x)
\b ( (?:CORE::)? package )
(?:
\s+ (
# package name - copied from variable
(?!')(?:(?:::|'?[^\W\d])\w*)+
)
|
(?!\w|::|'[^\W\d])
)
</string>
<key>name</key>
<string>meta.class.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.package.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>constant.language.string.perl</string>
</dict>
</dict>
<key>match</key>
<string>(?x)
# autoquoting keywords
\b ( (?:CORE::)? (?:use|require|no) )
(?:
\s+ (
# not a version number
(?!v\d)
# package name - copied from variable
(?!')(?:(?:::|'?[^\W\d])\w*)+
)
|
(?!\w|::|'[^\W\d])
)
</string>
</dict>
<dict>
<key>begin</key>
<string>(?x)
\b (?:
( (?:CORE::)? sub )
|
# non-standard sub definitions
(method|func|before|after|around)
)
#
# sub name - copied from variable
(?:
\s+ (
(?!')(?:(?:::|'?[^\W\d])\w*)++
)
|
(?!\w|::|'[^\W\d])
)
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>support.function.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>entity.name.function.perl</string>
</dict>
</dict>
<key>end</key>
<string>(?x)
(?! \s* [(] | \s* $ )
|
(?&lt;= [)] )
</string>
<key>name</key>
<string>meta.function.perl</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>\(</string>
<key>contentName</key>
<string>storage.type.method.perl</string>
<key>end</key>
<string>\)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>\b(?:CORE::)?(?:AUTOLOAD|BEGIN|CHECK|END|INIT|UNITCHECK)(?!\w|::|'[^\W\d])</string>
<key>name</key>
<string>meta.function.perl entity.name.function.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>constant.language.filehandle.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>constant.language.filehandle.perl</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>keyword.other.filetest.perl</string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>constant.language.filehandle.perl</string>
</dict>
</dict>
<key>match</key>
<string><![CDATA[(?x)
# these functions can take two filehandles as arguments
\b ( (?:CORE::)? (?:accept|pipe|socketpair) ) \g<6>
(\g<7>) \s*,\s* (\g<7>)
|
(?:
(
# these functions take a filehandle as the first argument
\b (?:CORE::)? (?:accept|bind|binmode|chdir|close|closedir|connect|eof|fcntl|fileno|flock|formline|getc|getpeername|getsockname|getsockopt|ioctl|listen|lstat|open|opendir|pipe|print|printf|read|readdir|readline|recv|rewinddir|say|seek|seekdir|select|send|setsockopt|shutdown|socket|socketpair|stat|sysopen|sysread|sysseek|syswrite|tell|telldir|truncate|write)
)
|
(
# filetest operators also take a filehandle as a first argument
-[ABCMORSTWXbcdefgkloprstuwxz] (?<!\w..)
)
)
(
(?!\w|::|'[^\W\d])
# open parens or space
(?: \s* (?:\(\s*)+ | \s+ )
)
(
# filehandle name - uppercase only
(?!')(?:(?:::|'?[^\W\d\p{Lower}])[^\W\p{Lower}]*)++
(?!\w|::|'[^\W\d]|\s*\()
)
]]></string>
<key>name</key>
<string>meta.function.filehandle.perl</string>
</dict>
<dict>
<key>match</key>
<string>-[ABCMORSTWXbcdefgkloprstuwxz](?&lt;!\w..)(?!\w|::|'[^\W\d])</string>
<key>name</key>
<string>keyword.other.filetest.perl</string>
</dict>
<dict>
<key>match</key>
<string>\b(?:CORE::)?(?:abs|accept|alarm|and|atan2|bind|binmode|bless|break|caller|chdir|chmod|chomp|chop|chown|chr|chroot|close|closedir|cmp|connect|continue|cos|crypt|dbmclose|dbmopen|default|defined|delete|die|do|dump|each|else|elsif|endgrent|endhostent|endnetent|endprotoent|endpwent|endservent|eof|eq|eval|evalbytes|exec|exists|exit|exp|fc|fcntl|fileno|flock|for|foreach|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|given|glob|gmtime|goto|grep|gt|hex|if|index|int|ioctl|join|keys|kill|last|lc|lcfirst|le|length|link|listen|local|localtime|lock|log|lstat|lt|m|map|mkdir|msgctl|msgget|msgrcv|msgsnd|my|ne|next|no|not|oct|open|opendir|or|ord|our|pack|package|pipe|pop|pos|print|printf|prototype|push|q|qq|qr|quotemeta|qw|qx|rand|read|readdir|readline|readlink|readpipe|recv|redo|ref|rename|require|reset|return|reverse|rewinddir|rindex|rmdir|s|say|scalar|seek|seekdir|select|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|state|study|sub|substr|symlink|syscall|sysopen|sysread|sysseek|system|syswrite|tell|telldir|tie|tied|time|times|tr|truncate|uc|ucfirst|umask|undef|unless|unlink|unpack|unshift|untie|until|use|utime|values|vec|wait|waitpid|wantarray|warn|when|while|write|x|xor|y)(?!\w|::|'[^\W\d])</string>
<key>name</key>
<string>keyword.other.function.perl</string>
</dict>
<dict>
<key>comment</key>
<string>These aren't keywords, so CORE:: isn't applicable.</string>
<key>match</key>
<string>\b(?:ARGV|ARGVOUT|STDERR|STDIN|STDOUT|DATA)(?!\w|::|'[^\W\d])</string>
<key>name</key>
<string>constant.language.filehandle.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.language.string.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>support.function.method.perl</string>
</dict>
</dict>
<key>match</key>
<string><![CDATA[(?x)
# class name
(?:
(?=[^[^\w:]\d])(?<!\w)
(\g<2>)
)?
\s* -> \s*
#
# method name
(?!')((?:(?:::|'?[^\W\d])\w*)++)
]]></string>
<key>name</key>
<string>meta.operator.arrow.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?xi)
\b(?:0b[01_]*)(?!\w)
</string>
<key>name</key>
<string>punctuation.definition.number.binary.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?xi)
\b(?:0[0-7_]+)(?!\w)
</string>
<key>name</key>
<string>punctuation.definition.number.octal.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?xi)
\b(?:0x[\h_]*)(?!\w)
</string>
<key>name</key>
<string>punctuation.definition.number.hex.perl</string>
</dict>
<dict>
<key>match</key>
<string><![CDATA[(?x)
\b (?:
v (\d[\d_]*) (\.\d[\d_]*)* # v with 1 or more digit groups
|
(?!0[\d_]) \g<1> \g<2>{2,} # no v with 3 or more digit groups
)
(?!\w)
]]></string>
<key>name</key>
<string>string.other.version.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?xi)
(?:
(?:
# start with digit
\b (?!0[\d_]) \d[\d_]*+ \.?
|
# start with point
\B \. \d
)
[\d_]*
(?: e [+-]? [\d_]* )? # possible exponent
)
(?!\w)
</string>
<key>name</key>
<string>punctuation.definition.number.float.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?:\b\d|\B\.\d)\w*</string>
<key>name</key>
<string>invalid.illegal.number.perl</string>
</dict>
<dict>
<key>match</key>
<string>\b[^\W\d\p{Lower}][^\W\p{Lower}]*+:(?!:)</string>
<key>name</key>
<string>constant.language.label.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?=[^[^\w:]\d])(?&lt;!\w)(?:(?:::|'?[^\W\d])\w*)+</string>
<key>name</key>
<string>support.function.perl</string>
</dict>
</array>
<key>repository</key>
<dict>
<key>double</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?&lt;=\!)</string>
<key>end</key>
<string>(?=\!)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\!]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\!]
|
[^}\!]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\")</string>
<key>end</key>
<string>(?=\")</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\"]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\"]
|
[^}\"]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\#)</string>
<key>end</key>
<string>(?=\#)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\#]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\#]
|
[^}\#]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\$)</string>
<key>end</key>
<string>(?=\$)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\\\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\\\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\$]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\$]
|
[^}\$]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\%)</string>
<key>end</key>
<string>(?=\%)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\%]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\%]
|
[^}\%]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\&amp;)</string>
<key>end</key>
<string>(?=\&amp;)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\&]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\&amp;]
|
[^}\&amp;]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\')</string>
<key>end</key>
<string>(?=\')</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\\\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\']
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\']
|
[^}\']
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\()</string>
<key>end</key>
<string>(?=\))</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\)]
)
|
\{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
\}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
\{ (?!__)[_\h]* \}
)
|
o \{ (?!__)[_0-7]* \}
|
[0-7]{1,3}
|
N \{
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\)]
|
[^}\)]
)*+
) \}
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
<dict>
<key>begin</key>
<string>\(</string>
<key>end</key>
<string>\)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\))</string>
<key>end</key>
<string>(?=\))</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\)]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\)]
|
[^}\)]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\*)</string>
<key>end</key>
<string>(?=\*)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\*]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\*]
|
[^}\*]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\+)</string>
<key>end</key>
<string>(?=\+)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\+]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\\\+ (?:_?\h+)++
|
(?! U\\\+ )
(?:
\\[\\\+]
|
[^}\+]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\,)</string>
<key>end</key>
<string>(?=\,)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\,]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\,]
|
[^}\,]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\-)</string>
<key>end</key>
<string>(?=\-)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\-]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\-]
|
[^}\-]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\.)</string>
<key>end</key>
<string>(?=\.)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\.]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\.]
|
[^}\.]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\/)</string>
<key>end</key>
<string>(?=\/)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\/]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\/]
|
[^}\/]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\:)</string>
<key>end</key>
<string>(?=\:)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\\\:\\\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\:]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\:]
|
[^}\:]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\;)</string>
<key>end</key>
<string>(?=\;)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\;]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\;]
|
[^}\;]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\&lt;)</string>
<key>end</key>
<string>(?=\&gt;)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\>]
)
|
\{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
\}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
\{ (?!__)[_\h]* \}
)
|
o \{ (?!__)[_0-7]* \}
|
[0-7]{1,3}
|
N \{
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\&gt;]
|
[^}\&gt;]
)*+
) \}
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
<dict>
<key>begin</key>
<string>\&lt;</string>
<key>end</key>
<string>\&gt;</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\=)</string>
<key>end</key>
<string>(?=\=)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\=]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\=]
|
[^}\=]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\&gt;)</string>
<key>end</key>
<string>(?=\&gt;)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\>]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\&gt;]
|
[^}\&gt;]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\?)</string>
<key>end</key>
<string>(?=\?)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\?]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\?]
|
[^}\?]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\@)</string>
<key>end</key>
<string>(?=\@)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\\\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\@]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\@]
|
[^}\@]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\[)</string>
<key>end</key>
<string>(?=\])</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\]]
)
|
\{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
\}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
\{ (?!__)[_\h]* \}
)
|
o \{ (?!__)[_0-7]* \}
|
[0-7]{1,3}
|
N \{
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\]]
|
[^}\]]
)*+
) \}
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
<dict>
<key>begin</key>
<string>\[</string>
<key>end</key>
<string>\]</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\\)</string>
<key>end</key>
<string>(?=\\)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\\]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
[^}\\]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\])</string>
<key>end</key>
<string>(?=\])</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\]]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\]]
|
[^}\]]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\^)</string>
<key>end</key>
<string>(?=\^)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\\\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\^]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\^]
|
[^}\^]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\`)</string>
<key>end</key>
<string>(?=\`)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\`]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\`]
|
[^}\`]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\{)</string>
<key>end</key>
<string>(?=\})</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\}]
)
|
(\\?)\{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
\k<-1>\}
|
(?=\\\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string><![CDATA[(?x)
\\ (?:
x (?:
\h{1,2}
|
(\\?)\{ (?!__)[_\h]* \k<-1>\}
)
|
o (\\?)\{ (?!__)[_0-7]* \k<-1>\}
|
[0-7]{1,3}
|
N (\\?)\{
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
[^}\}]
)*+
) \k<-1>\}
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
]]></string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
<dict>
<key>begin</key>
<string>\{</string>
<key>end</key>
<string>\}</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\|)</string>
<key>end</key>
<string>(?=\|)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\|]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\|]
|
[^}\|]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\})</string>
<key>end</key>
<string>(?=\})</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\}]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
[^}\}]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\~)</string>
<key>end</key>
<string>(?=\~)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\~]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\~]
|
[^}\~]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>^</string>
<key>end</key>
<string>\n|(?&lt;=\n)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$ \s*
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)?
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\]
|
[^}]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>double_or_single</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?&lt;=')</string>
<key>contentName</key>
<string>string.quoted.single.perl</string>
<key>end</key>
<string>(?=')</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=(\()|(&lt;)|(\[)|({)|([^[^!-~]\w\s]))</string>
<key>contentName</key>
<string>string.quoted.double.perl</string>
<key>end</key>
<string>(?=(?!\1)\)|(?!\2)&gt;|(?!\3)\]|(?!\4)}|[\5[&amp;&amp;]])</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>double_or_single_regexp</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?&lt;=')</string>
<key>contentName</key>
<string>string.regexp.perl</string>
<key>end</key>
<string>(?=')</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=(\()|(&lt;)|(\[)|({)|([^[^!-~]\w\s]))</string>
<key>contentName</key>
<string>string.regexp.perl</string>
<key>end</key>
<string>(?=(?!\1)\)|(?!\2)&gt;|(?!\3)\]|(?!\4)}|[\5[&amp;&amp;]])</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_regexp</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>double_regexp</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?&lt;=\!)</string>
<key>end</key>
<string>(?=\!)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\!]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\!]
|
[^}\!]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\")</string>
<key>end</key>
<string>(?=\")</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\"]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\"]
|
[^}\"]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\#)</string>
<key>end</key>
<string>(?=\#)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\#]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\#]
|
[^}\#]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\$)</string>
<key>end</key>
<string>(?=\$)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\\\$
(?<scalar_identifier>
(?<scalar>
(?:\\\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\$]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\$]
|
[^}\$]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\%)</string>
<key>end</key>
<string>(?=\%)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\%]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\%]
|
[^}\%]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\&amp;)</string>
<key>end</key>
<string>(?=\&amp;)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\&]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\&amp;]
|
[^}\&amp;]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\')</string>
<key>end</key>
<string>(?=\')</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\\\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\']
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\']
|
[^}\']
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\()</string>
<key>end</key>
<string>(?=\))</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\)]
)
|
\{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
\}
|
(?=\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
\{ (?!__)[_\h]* \}
)
|
o \{ (?!__)[_0-7]* \}
|
[0-7]{1,3}
|
N \{
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\)]
|
[^}\)]
)*+
) \}
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
<dict>
<key>begin</key>
<string>\(</string>
<key>end</key>
<string>\)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_regexp</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\))</string>
<key>end</key>
<string>(?=\))</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\)]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\)]
|
[^}\)]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\*)</string>
<key>end</key>
<string>(?=\*)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\*]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\*]
|
[^}\*]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\+)</string>
<key>end</key>
<string>(?=\+)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\+]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\\\+ (?:_?\h+)++
|
(?! U\\\+ )
(?:
\\[\\\+]
|
[^}\+]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\,)</string>
<key>end</key>
<string>(?=\,)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\,]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\,]
|
[^}\,]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\-)</string>
<key>end</key>
<string>(?=\-)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\-]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\-]
|
[^}\-]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\.)</string>
<key>end</key>
<string>(?=\.)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\.]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\.]
|
[^}\.]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\/)</string>
<key>end</key>
<string>(?=\/)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\/]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\/]
|
[^}\/]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\:)</string>
<key>end</key>
<string>(?=\:)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\\\:\\\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\:]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\:]
|
[^}\:]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\;)</string>
<key>end</key>
<string>(?=\;)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\;]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\;]
|
[^}\;]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\&lt;)</string>
<key>end</key>
<string>(?=\&gt;)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\>]
)
|
\{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
\}
|
(?=\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
\{ (?!__)[_\h]* \}
)
|
o \{ (?!__)[_0-7]* \}
|
[0-7]{1,3}
|
N \{
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\&gt;]
|
[^}\&gt;]
)*+
) \}
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
<dict>
<key>begin</key>
<string>\&lt;</string>
<key>end</key>
<string>\&gt;</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_regexp</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\=)</string>
<key>end</key>
<string>(?=\=)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\=]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\=]
|
[^}\=]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\&gt;)</string>
<key>end</key>
<string>(?=\&gt;)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\>]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\&gt;]
|
[^}\&gt;]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\?)</string>
<key>end</key>
<string>(?=\?)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\?]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\?]
|
[^}\?]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\@)</string>
<key>end</key>
<string>(?=\@)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\\\@ \g<scalar_identifier>
|
\$
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\@]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\@]
|
[^}\@]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\[)</string>
<key>end</key>
<string>(?=\])</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\]]
)
|
\{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
\}
|
(?=\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
\{ (?!__)[_\h]* \}
)
|
o \{ (?!__)[_0-7]* \}
|
[0-7]{1,3}
|
N \{
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\]]
|
[^}\]]
)*+
) \}
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
<dict>
<key>begin</key>
<string>\[</string>
<key>end</key>
<string>\]</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_regexp</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\\)</string>
<key>end</key>
<string>(?=\\)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\\]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
[^}\\]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\])</string>
<key>end</key>
<string>(?=\])</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\]]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\]]
|
[^}\]]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\^)</string>
<key>end</key>
<string>(?=\^)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\\\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\^]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\^]
|
[^}\^]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\`)</string>
<key>end</key>
<string>(?=\`)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\`]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\`]
|
[^}\`]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\{)</string>
<key>end</key>
<string>(?=\})</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\}]
)
|
(\\?)\{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
\k<-1>\}
|
(?=\\\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string><![CDATA[(?x)
\\ (?:
x (?:
\h{1,2}
|
(\\?)\{ (?!__)[_\h]* \k<-1>\}
)
|
o (\\?)\{ (?!__)[_0-7]* \k<-1>\}
|
[0-7]{1,3}
|
N (\\?)\{
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
[^}\}]
)*+
) \k<-1>\}
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
]]></string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
<dict>
<key>begin</key>
<string>\{</string>
<key>end</key>
<string>\}</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double_regexp</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\|)</string>
<key>end</key>
<string>(?=\|)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\|]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\|]
|
[^}\|]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\})</string>
<key>end</key>
<string>(?=\})</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\}]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
[^}\}]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\~)</string>
<key>end</key>
<string>(?=\~)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string><![CDATA[(?x)
(?<variable>
\@ \g<scalar_identifier>
|
\$
(?<scalar_identifier>
(?<scalar>
(?:\$)+
(?<identifier>
(?<caret_id>
\^ [^\W\d\p{Lower}]
)
|
(?<normal_id>
\d+
|
(?:
(?: (?:\:\:) | (?:\')?[^\W\d] ) \w*
)++
# |
# [^[^!-~]{\w\s\~]
)
|
{
\s* (?:
\g<variable> | \g<caret_id> \w* | \g<normal_id>
) \s*
}
|
(?=\{)
)
)
|
\g<identifier>
)
)
]]></string>
<key>name</key>
<string>keyword.other.storage.perl storage.modifier.perl variable.parameter.perl variable.other.readwrite.global.perl</string>
</dict>
<dict>
<key>match</key>
<string>(?x)
\\ (?:
x (?:
\h{1,2}
|
{ (?!__)[_\h]* }
)
|
o { (?!__)[_0-7]* }
|
[0-7]{1,3}
|
N {
(?:
U\+ (?:_?\h+)++
|
(?! U\+ )
(?:
\\[\\\~]
|
[^}\~]
)*+
) }
|
#c [^\P{ASCII}{]
#|
\p{Alnum}
)
</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\d\D]</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>heredoc_1</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x)
&lt;&lt; (?=
[^\W\d]\w*
|
\d\w*[\p{Alpha}]\w*+ # word starting with digit but containing a non-digit
|
\\ \w*
|
\s* (['"`]) .*? \1
)
</string>
<key>end</key>
<string>$</string>
<key>name</key>
<string>meta.heredoc.perl</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x)
(?:
( (?:[^\W\p{Lower}]*_)? CSS ) \b
|
\s* (["`'])
(?:
((?&lt;=") \s* (?: (?:[^\W\p{Lower}]*_)? CSS ))
|
((?&lt;=`) \s* (?: (?:[^\W\p{Lower}]*_)? CSS ))
|
(\s* (?: (?:[^\W\p{Lower}]*_)? CSS ))
)
(\2)
|
\\ ( (?:[^\W\p{Lower}]*_)? CSS ) \b
)
.* \n?
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>string.interpolated.perl</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
</dict>
<key>contentName</key>
<string>source.css.embedded.perl</string>
<key>end</key>
<string>^(\1\3)(\4)(\5\7)$</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.interpolated.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>source.css</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x)
(?:
( (?:[^\W\p{Lower}]*_)? HTML ) \b
|
\s* (["`'])
(?:
((?&lt;=") \s* (?: (?:[^\W\p{Lower}]*_)? HTML ))
|
((?&lt;=`) \s* (?: (?:[^\W\p{Lower}]*_)? HTML ))
|
(\s* (?: (?:[^\W\p{Lower}]*_)? HTML ))
)
(\2)
|
\\ ( (?:[^\W\p{Lower}]*_)? HTML ) \b
)
.* \n?
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>string.interpolated.perl</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
</dict>
<key>contentName</key>
<string>text.html.basic.embedded.perl</string>
<key>end</key>
<string>^(\1\3)(\4)(\5\7)$</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.interpolated.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>text.html.basic</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x)
(?:
( (?:[^\W\p{Lower}]*_)? (?:JS|JAVASCRIPT) ) \b
|
\s* (["`'])
(?:
((?&lt;=") \s* (?: (?:[^\W\p{Lower}]*_)? (?:JS|JAVASCRIPT) ))
|
((?&lt;=`) \s* (?: (?:[^\W\p{Lower}]*_)? (?:JS|JAVASCRIPT) ))
|
(\s* (?: (?:[^\W\p{Lower}]*_)? (?:JS|JAVASCRIPT) ))
)
(\2)
|
\\ ( (?:[^\W\p{Lower}]*_)? (?:JS|JAVASCRIPT) ) \b
)
.* \n?
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>string.interpolated.perl</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
</dict>
<key>contentName</key>
<string>source.js.embedded.perl</string>
<key>end</key>
<string>^(\1\3)(\4)(\5\7)$</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.interpolated.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>source.js</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x)
(?:
( (?:[^\W\p{Lower}]*_)? PERL ) \b
|
\s* (["`'])
(?:
((?&lt;=") \s* (?: (?:[^\W\p{Lower}]*_)? PERL ))
|
((?&lt;=`) \s* (?: (?:[^\W\p{Lower}]*_)? PERL ))
|
(\s* (?: (?:[^\W\p{Lower}]*_)? PERL ))
)
(\2)
|
\\ ( (?:[^\W\p{Lower}]*_)? PERL ) \b
)
.* \n?
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>string.interpolated.perl</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
</dict>
<key>contentName</key>
<string>source.perl.embedded.perl</string>
<key>end</key>
<string>^(\1\3)(\4)(\5\7)$</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.interpolated.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x)
(?:
( (?:[^\W\p{Lower}]*_)? SQL ) \b
|
\s* (["`'])
(?:
((?&lt;=") \s* (?: (?:[^\W\p{Lower}]*_)? SQL ))
|
((?&lt;=`) \s* (?: (?:[^\W\p{Lower}]*_)? SQL ))
|
(\s* (?: (?:[^\W\p{Lower}]*_)? SQL ))
)
(\2)
|
\\ ( (?:[^\W\p{Lower}]*_)? SQL ) \b
)
.* \n?
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>string.interpolated.perl</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
</dict>
<key>contentName</key>
<string>source.sql.embedded.perl</string>
<key>end</key>
<string>^(\1\3)(\4)(\5\7)$</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.interpolated.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>source.sql</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x)
(?:
( (?:[^\W\p{Lower}]*_)? XML ) \b
|
\s* (["`'])
(?:
((?&lt;=") \s* (?: (?:[^\W\p{Lower}]*_)? XML ))
|
((?&lt;=`) \s* (?: (?:[^\W\p{Lower}]*_)? XML ))
|
(\s* (?: (?:[^\W\p{Lower}]*_)? XML ))
)
(\2)
|
\\ ( (?:[^\W\p{Lower}]*_)? XML ) \b
)
.* \n?
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>string.interpolated.perl</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
</dict>
<key>contentName</key>
<string>text.xml.embedded.perl</string>
<key>end</key>
<string>^(\1\3)(\4)(\5\7)$</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.interpolated.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>text.xml</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x)
(?:
(\w+)
|
\s* (["`])
(?:
((?&lt;=") .*?)
|
(.*?)
)
(\2)
)
.* \n?
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>string.interpolated.perl</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
</dict>
<key>contentName</key>
<string>string.unquoted.perl</string>
<key>end</key>
<string>^(\1\3)(\4)$</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>string.quoted.double.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>string.interpolated.perl</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#double</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x)
(?:
\\ (\w+)
|
\s* (') (.*?) (')
)
.* \n?
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
</dict>
<key>contentName</key>
<string>string.unquoted.perl</string>
<key>end</key>
<string>^(\1\3)$</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>string.quoted.single.perl</string>
</dict>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<key>line_comment</key>
<dict>
<key>match</key>
<string>\#[\d\D]*</string>
<key>name</key>
<string>comment.line.number-sign.perl</string>
</dict>
<key>pod</key>
<dict>
<key>begin</key>
<string>^=\p{Alpha}[\d\D]*</string>
<key>end</key>
<string>^=cut(?!\p{Alpha})[\d\D]*</string>
<key>name</key>
<string>meta.pod comment.block.perl</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\t+</string>
<key>name</key>
<string>invalid.deprecated.perl</string>
</dict>
</array>
</dict>
<key>regex_quantifier_curly</key>
<dict>
<key>begin</key>
<string>(?x)
(?={
(?&gt;0*(?=\d))
\d*?(\d??)(\d??)(\d??)(\d??)(\d??)(\d??)(\d??)(\d??)(\d??)(\d??)
,? \d*+
})
</string>
<key>comment</key>
<string>For {n,m} to be a quantifier, n must exist, and m must be greater than n if it exists. Just take my word for it that this voodoo does all that and numeric comparison of m &gt; n up to an n that is 10 digits long.</string>
<key>end</key>
<string><![CDATA[(?x)
({
\d+
(?:
# m is empty
,?
|
# otherwise numeric comparison!
, (?>0*(?=\d))
(?: \d{11,} | [&\1&\d&&[^0-\1]]\d{9} | \1
(?: \d{10,} | [&\2&\d&&[^0-\2]]\d{8} | \2
(?: \d{9,} | [&\3&\d&&[^0-\3]]\d{7} | \3
(?: \d{8,} | [&\4&\d&&[^0-\4]]\d{6} | \4
(?: \d{7,} | [&\5&\d&&[^0-\5]]\d{5} | \5
(?: \d{6,} | [&\6&\d&&[^0-\6]]\d{4} | \6
(?: \d{5,} | [&\7&\d&&[^0-\7]]\d{3} | \7
(?: \d{4,} | [&\8&\d&&[^0-\8]]\d{2} | \8
(?: \d{3,} | [&\9&\d&&[^0-\9]]\d{1} | \9
(?: \d{2,} | [&\10&\d&&[^0-\10]]\d{0}
))))))))))
)
})
|
# not a quantifier, but we have to match something to prevent infinite recursion
{\d*,?\d*}
]]></string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>string.regexp.perl</string>
</dict>
</dict>
</dict>
<key>single</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?&lt;=\!)</string>
<key>end</key>
<string>(?=\!)</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\!\\]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\")</string>
<key>end</key>
<string>(?=\")</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\"\\]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\#)</string>
<key>end</key>
<string>(?=\#)</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\#\\]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\$)</string>
<key>end</key>
<string>(?=\$)</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\$\\]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\%)</string>
<key>end</key>
<string>(?=\%)</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\%\\]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\&amp;)</string>
<key>end</key>
<string>(?=\&amp;)</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\&amp;\\]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\')</string>
<key>end</key>
<string>(?=\')</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\'\\]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\()</string>
<key>end</key>
<string>(?=\))</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\(\)\\]</string>
</dict>
<dict>
<key>begin</key>
<string>\(</string>
<key>end</key>
<string>\)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\))</string>
<key>end</key>
<string>(?=\))</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\)\\]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\*)</string>
<key>end</key>
<string>(?=\*)</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\*\\]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\+)</string>
<key>end</key>
<string>(?=\+)</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\+\\]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\,)</string>
<key>end</key>
<string>(?=\,)</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\,\\]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\-)</string>
<key>end</key>
<string>(?=\-)</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\-\\]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\.)</string>
<key>end</key>
<string>(?=\.)</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\.\\]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\/)</string>
<key>end</key>
<string>(?=\/)</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\/\\]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\:)</string>
<key>end</key>
<string>(?=\:)</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\:\\]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\;)</string>
<key>end</key>
<string>(?=\;)</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\;\\]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\&lt;)</string>
<key>end</key>
<string>(?=\&gt;)</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\&lt;\&gt;\\]</string>
</dict>
<dict>
<key>begin</key>
<string>\&lt;</string>
<key>end</key>
<string>\&gt;</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\=)</string>
<key>end</key>
<string>(?=\=)</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\=\\]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\&gt;)</string>
<key>end</key>
<string>(?=\&gt;)</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\&gt;\\]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\?)</string>
<key>end</key>
<string>(?=\?)</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\?\\]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\@)</string>
<key>end</key>
<string>(?=\@)</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\@\\]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\[)</string>
<key>end</key>
<string>(?=\])</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\[\]\\]</string>
</dict>
<dict>
<key>begin</key>
<string>\[</string>
<key>end</key>
<string>\]</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\\)</string>
<key>end</key>
<string>(?=\\)</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\\\\]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\])</string>
<key>end</key>
<string>(?=\])</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\]\\]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\^)</string>
<key>end</key>
<string>(?=\^)</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\^\\]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\`)</string>
<key>end</key>
<string>(?=\`)</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\`\\]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\{)</string>
<key>end</key>
<string>(?=\})</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\{\}\\]</string>
</dict>
<dict>
<key>begin</key>
<string>\{</string>
<key>end</key>
<string>\}</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#single</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\|)</string>
<key>end</key>
<string>(?=\|)</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\|\\]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\})</string>
<key>end</key>
<string>(?=\})</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\}\\]</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\~)</string>
<key>end</key>
<string>(?=\~)</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</dict>
<key>match</key>
<string>(\\)[\~\\]</string>
</dict>
</array>
</dict>
</array>
</dict>
</dict>
<key>scopeName</key>
<string>source.perl</string>
<key>uuid</key>
<string>2c338cc8-a464-4ee4-a56c-d524947fa6f9</string>
</dict>
</plist>
%YAML 1.2
---
# http://www.sublimetext.com/docs/3/syntax.html
name: Perl
comment: "TODO: Include RegExp syntax"
file_extensions:
- pl
- pm
- pod
- t
- PL
first_line_match: ^#!.*\bperl\b
scope: source.perl
contexts:
main:
- include: line_comment
- match: ^=
captures:
0: punctuation.definition.comment.perl
push:
- meta_scope: comment.block.documentation.perl
- match: ^=cut
captures:
0: punctuation.definition.comment.perl
pop: true
- include: variable
- match: '\b(?=qr\s*[^\s\w])'
comment: string.regexp.compile.perl
push:
- match: '(qr)\s*\{'
captures:
0: punctuation.definition.string.perl
1: support.function.perl
push:
- meta_scope: string.regexp.compile.nested_braces.perl
- match: '\}'
captures:
0: punctuation.definition.string.perl
1: support.function.perl
pop: true
- include: escaped_char
- include: variable
- include: nested_braces_interpolated
- match: '(qr)\s*\['
captures:
0: punctuation.definition.string.perl
1: support.function.perl
push:
- meta_scope: string.regexp.compile.nested_brackets.perl
- match: '\]'
captures:
0: punctuation.definition.string.perl
1: support.function.perl
pop: true
- include: escaped_char
- include: variable
- include: nested_brackets_interpolated
- match: (qr)\s*<
captures:
0: punctuation.definition.string.perl
1: support.function.perl
push:
- meta_scope: string.regexp.compile.nested_ltgt.perl
- match: ">"
captures:
0: punctuation.definition.string.perl
1: support.function.perl
pop: true
- include: escaped_char
- include: variable
- include: nested_ltgt_interpolated
- match: (qr)\s*\(
captures:
0: punctuation.definition.string.perl
1: support.function.perl
push:
- meta_scope: string.regexp.compile.nested_parens.perl
- match: \)
captures:
0: punctuation.definition.string.perl
1: support.function.perl
pop: true
- include: escaped_char
- include: variable
- include: nested_parens_interpolated
- match: (qr)\s*\'
captures:
0: punctuation.definition.string.perl
1: support.function.perl
push:
- meta_scope: string.regexp.compile.single-quote.perl
- match: \'
captures:
0: punctuation.definition.string.perl
1: support.function.perl
pop: true
- include: escaped_char
- match: '(qr)\s*([^\s\w\''\{\[\(\<])'
captures:
0: punctuation.definition.string.perl
1: support.function.perl
push:
- meta_scope: string.regexp.compile.simple-delimiter.perl
- match: \2
captures:
0: punctuation.definition.string.perl
1: support.function.perl
pop: true
- match: '\$(?=[^\s\w\''\{\[\(\<])'
comment: This is to prevent thinks like qr/foo$/ to treat $/ as a variable
scope: keyword.control.anchor.perl
- include: escaped_char
- include: variable
- include: nested_parens_interpolated
- match: '((([egimosx]*)))(?=(\s+\S|\s*[;\,\#\{\}\)]|$))'
captures:
1: string.regexp.compile.perl
2: punctuation.definition.string.perl
3: keyword.control.regexp-option.perl
pop: true
- match: '\b(?=(?<!\&)(s)(\s+\S|\s*[;\,\#\{\}\(\)\[<]|$))'
comment: string.regexp.replace.perl
push:
- match: '(s)\s*\{'
captures:
0: punctuation.definition.string.perl
1: support.function.perl
push:
- meta_scope: string.regexp.nested_braces.perl
- match: '\}'
captures:
0: punctuation.definition.string.perl
1: support.function.perl
pop: true
- include: escaped_char
- include: nested_braces
- match: '(s)\s*\['
captures:
0: punctuation.definition.string.perl
1: support.function.perl
push:
- meta_scope: string.regexp.nested_brackets.perl
- match: '\]'
captures:
0: punctuation.definition.string.perl
1: support.function.perl
pop: true
- include: escaped_char
- include: nested_brackets
- match: (s)\s*<
captures:
0: punctuation.definition.string.perl
1: support.function.perl
push:
- meta_scope: string.regexp.nested_ltgt.perl
- match: ">"
captures:
0: punctuation.definition.string.perl
1: support.function.perl
pop: true
- include: escaped_char
- include: nested_ltgt
- match: (s)\s*\(
captures:
0: punctuation.definition.string.perl
1: support.function.perl
push:
- meta_scope: string.regexp.nested_parens.perl
- match: \)
captures:
0: punctuation.definition.string.perl
1: support.function.perl
pop: true
- include: escaped_char
- include: nested_parens
- match: '\{'
captures:
0: punctuation.definition.string.perl
push:
- meta_scope: string.regexp.format.nested_braces.perl
- match: '\}'
captures:
0: punctuation.definition.string.perl
pop: true
- include: escaped_char
- include: variable
- include: nested_braces_interpolated
- match: '\['
captures:
0: punctuation.definition.string.perl
push:
- meta_scope: string.regexp.format.nested_brackets.perl
- match: '\]'
captures:
0: punctuation.definition.string.perl
pop: true
- include: escaped_char
- include: variable
- include: nested_brackets_interpolated
- match: "<"
captures:
0: punctuation.definition.string.perl
push:
- meta_scope: string.regexp.format.nested_ltgt.perl
- match: ">"
captures:
0: punctuation.definition.string.perl
pop: true
- include: escaped_char
- include: variable
- include: nested_ltgt_interpolated
- match: \(
captures:
0: punctuation.definition.string.perl
push:
- meta_scope: string.regexp.format.nested_parens.perl
- match: \)
captures:
0: punctuation.definition.string.perl
pop: true
- include: escaped_char
- include: variable
- include: nested_parens_interpolated
- match: "'"
captures:
0: punctuation.definition.string.perl
push:
- meta_scope: string.regexp.format.single_quote.perl
- match: "'"
captures:
0: punctuation.definition.string.perl
pop: true
- match: '\\[''\\]'
scope: constant.character.escape.perl
- match: '([^\s\w\[({<;])'
captures:
0: punctuation.definition.string.perl
push:
- meta_scope: string.regexp.format.simple_delimiter.perl
- match: \1
captures:
0: punctuation.definition.string.perl
pop: true
- include: escaped_char
- include: variable
- match: \s+
- match: '((([egimosx]*)))(?=(\s+\S|\s*[;\,\#\{\}\)\]>]|$))'
captures:
1: string.regexp.replace.perl
2: punctuation.definition.string.perl
3: keyword.control.regexp-option.perl
pop: true
- match: '\b(?=s([^\s\w\[({<]).*\1([egimos]*)([\}\)\;\,]|\s+))'
comment: string.regexp.replaceXXX
push:
- match: '((([egimos]*)))(?=([\}\)\;\,]|\s+|$))'
captures:
1: string.regexp.replace.perl
2: punctuation.definition.string.perl
3: keyword.control.regexp-option.perl
pop: true
- match: '(s\s*)([^\s\w\[({<])'
captures:
0: punctuation.definition.string.perl
1: support.function.perl
push:
- meta_scope: string.regexp.replaceXXX.simple_delimiter.perl
- match: (?=\2)
captures:
0: punctuation.definition.string.perl
1: support.function.perl
pop: true
- include: escaped_char
- match: "'"
captures:
0: punctuation.definition.string.perl
push:
- meta_scope: string.regexp.replaceXXX.format.single_quote.perl
- match: "'"
captures:
0: punctuation.definition.string.perl
pop: true
- match: '\\[''\\]'
scope: constant.character.escape.perl.perl
- match: '([^\s\w\[({<])'
captures:
0: punctuation.definition.string.perl
push:
- meta_scope: string.regexp.replaceXXX.format.simple_delimiter.perl
- match: \1
captures:
0: punctuation.definition.string.perl
pop: true
- include: escaped_char
- include: variable
- match: '\b(?=(?<!\\)s\s*([^\s\w\[({<]))'
comment: string.regexp.replace.extended
push:
- match: '\2((([egimos]*x[egimos]*)))\b'
captures:
1: string.regexp.replace.perl
2: punctuation.definition.string.perl
3: keyword.control.regexp-option.perl
pop: true
- match: (s)\s*(.)
captures:
0: punctuation.definition.string.perl
1: support.function.perl
push:
- meta_scope: string.regexp.replace.extended.simple_delimiter.perl
- match: (?=\2)
captures:
0: punctuation.definition.string.perl
1: support.function.perl
pop: true
- include: escaped_char
- match: "'"
captures:
0: punctuation.definition.string.perl
push:
- meta_scope: string.regexp.replace.extended.simple_delimiter.perl
- match: '''(?=[egimos]*x[egimos]*)\b'
captures:
0: punctuation.definition.string.perl
pop: true
- include: escaped_char
- match: (.)
captures:
0: punctuation.definition.string.perl
push:
- meta_scope: string.regexp.replace.extended.simple_delimiter.perl
- match: '\1(?=[egimos]*x[egimos]*)\b'
captures:
0: punctuation.definition.string.perl
pop: true
- include: escaped_char
- include: variable
- match: \b\w+\s*(?==>)
scope: constant.other.key.perl
- match: \b\w+\?\s*(?==>)
scope: constant.other.key.optional.perl
- match: '(?<={)\s*\w+\s*(?=})'
scope: constant.other.bareword.perl
- match: '(?<!\\)((~\s*)?\/)(\S.*?)(?<!\\)(\\{2})*(\/)'
scope: string.regexp.find.perl
captures:
1: punctuation.definition.string.perl
5: punctuation.definition.string.perl
- match: (?<!\\)(\~\s*\/)
captures:
0: punctuation.definition.string.perl
push:
- meta_scope: string.regexp.find.extended.perl
- match: '\/([cgimos]*x[cgimos]*)\b'
captures:
1: keyword.control.regexp-option.perl
pop: true
- include: escaped_char
- include: variable
- match: ^\s*(package)\s+(\S+)\s*((#).*)?$\n?
scope: meta.class.perl
captures:
1: keyword.control.perl
2: entity.name.type.class.perl
3: comment.line.number-sign.perl
4: punctuation.definition.comment.perl
- match: '^\s*(sub)\s+([-a-zA-Z0-9_]+)\s*(\([\$\@\*;]*\))?'
scope: meta.function.perl
captures:
1: storage.type.sub.perl
2: entity.name.function.perl
3: storage.type.method.perl
- match: ^\s*(BEGIN|END|DESTROY)\b
scope: meta.function.perl
captures:
1: entity.name.function.perl
2: punctuation.definition.parameters.perl
3: variable.parameter.function.perl
- match: '^(?=(\t| {4}))'
push:
- meta_scope: meta.leading-tabs
- match: '(?=[^\t\s])'
pop: true
- match: '(\t| {4})(\t| {4})?'
captures:
1: meta.odd-tab
2: meta.even-tab
- match: '\b(m)\s*(?<!\\)([^\[\{\(A-Za-z0-9\s])(.*?)(?<!\\)(\\{2})*(\2)'
scope: string.regexp.find-m.perl
captures:
1: support.function.perl
2: punctuation.definition.string.perl
5: punctuation.definition.string.perl
- match: \b(m)\s*(?<!\\)\(
captures:
0: punctuation.definition.string.begin.perl
push:
- meta_scope: string.regexp.find-m-paren.perl
- match: \)
captures:
0: punctuation.definition.string.end.perl
pop: true
- include: escaped_char
- include: nested_parens_interpolated
- include: variable
- match: '\b(m)\s*(?<!\\)\{'
captures:
0: punctuation.definition.string.begin.perl
push:
- meta_scope: string.regexp.find-m-brace.perl
- match: '\}'
captures:
0: punctuation.definition.string.end.perl
pop: true
- include: escaped_char
- include: nested_braces_interpolated
- include: variable
- match: '\b(m)\s*(?<!\\)\['
captures:
0: punctuation.definition.string.begin.perl
push:
- meta_scope: string.regexp.find-m-bracket.perl
- match: '\]'
captures:
0: punctuation.definition.string.end.perl
pop: true
- include: escaped_char
- include: nested_brackets_interpolated
- include: variable
- match: \b(m)\s*(?<!\\)\<
captures:
0: punctuation.definition.string.begin.perl
push:
- meta_scope: string.regexp.find-m-ltgt.perl
- match: \>
captures:
0: punctuation.definition.string.end.perl
pop: true
- include: escaped_char
- include: nested_ltgt_interpolated
- include: variable
- match: '\b(s|tr|y)\s*([^A-Za-z0-9\s])(.*?)(?<!\\)(\\{2})*(\2)(.*?)(?<!\\)(\\{2})*(\2)'
scope: string.regexp.replace.perl
captures:
1: support.function.perl
2: punctuation.definition.string.perl
5: punctuation.definition.string.perl
8: punctuation.definition.string.perl
- match: \b(__FILE__|__LINE__|__PACKAGE__)\b
scope: 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
scope: keyword.control.perl
- match: \b(my|our|local)\b
scope: storage.modifier.perl
- match: '(?<!\w)\-[rwx0RWXOezsfdlpSbctugkTBMAC]\b'
scope: keyword.operator.filetest.perl
- match: \b(and|or|xor|as)\b
scope: keyword.operator.logical.perl
- match: (<=>| =>|->)
scope: keyword.operator.comparison.perl
- match: ((<<) *"HTML").*\n?
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.doublequote.perl
2: punctuation.definition.heredoc.perl
push:
- meta_content_scope: text.html.embedded.perl
- match: (^HTML$)
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.doublequote.perl
2: punctuation.definition.heredoc.perl
pop: true
- include: escaped_char
- include: variable
- include: scope:text.html.basic
- match: ((<<) *"XML").*\n?
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.doublequote.perl
2: punctuation.definition.heredoc.perl
push:
- meta_content_scope: text.xml.embedded.perl
- match: (^XML$)
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.doublequote.perl
2: punctuation.definition.heredoc.perl
pop: true
- include: escaped_char
- include: variable
- include: scope:text.xml
- match: ((<<) *"CSS").*\n?
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.doublequote.perl
2: punctuation.definition.heredoc.perl
push:
- meta_content_scope: text.css.embedded.perl
- match: (^CSS$)
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.doublequote.perl
2: punctuation.definition.heredoc.perl
pop: true
- include: escaped_char
- include: variable
- include: scope:source.css
- match: ((<<) *"JAVASCRIPT").*\n?
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.doublequote.perl
2: punctuation.definition.heredoc.perl
push:
- meta_content_scope: text.js.embedded.perl
- match: (^JAVASCRIPT$)
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.doublequote.perl
2: punctuation.definition.heredoc.perl
pop: true
- include: escaped_char
- include: variable
- include: scope:source.js
- match: ((<<) *"SQL").*\n?
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.doublequote.perl
2: punctuation.definition.heredoc.perl
push:
- meta_content_scope: source.sql.embedded.perl
- match: (^SQL$)
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.doublequote.perl
2: punctuation.definition.heredoc.perl
pop: true
- include: escaped_char
- include: variable
- include: scope:source.sql
- match: '((<<) *"([^"]*)").*\n?'
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.doublequote.perl
2: punctuation.definition.heredoc.perl
push:
- meta_content_scope: string.unquoted.heredoc.doublequote.perl
- match: (^\3$)
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.doublequote.perl
2: punctuation.definition.heredoc.perl
pop: true
- include: escaped_char
- include: variable
- match: ((<<) *'HTML').*\n?
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.quote.perl
2: punctuation.definition.heredoc.perl
push:
- meta_content_scope: text.html.embedded.perl
- match: (^HTML$)
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.quote.perl
2: punctuation.definition.heredoc.perl
pop: true
- include: scope:text.html.basic
- match: ((<<) *'XML').*\n?
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.quote.perl
2: punctuation.definition.heredoc.perl
push:
- meta_content_scope: text.xml.embedded.perl
- match: (^XML$)
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.quote.perl
2: punctuation.definition.heredoc.perl
pop: true
- include: scope:text.xml
- match: ((<<) *'CSS').*\n?
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.quote.perl
2: punctuation.definition.heredoc.perl
push:
- meta_content_scope: text.css.embedded.perl
- match: (^CSS$)
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.quote.perl
2: punctuation.definition.heredoc.perl
pop: true
- include: scope:source.css
- match: ((<<) *'JAVASCRIPT').*\n?
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.quote.perl
2: punctuation.definition.heredoc.perl
push:
- meta_content_scope: text.js.embedded.perl
- match: (^JAVASCRIPT$)
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.quote.perl
2: punctuation.definition.heredoc.perl
pop: true
- include: scope:source.js
- match: ((<<) *'SQL').*\n?
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.quote.perl
2: punctuation.definition.heredoc.perl
push:
- meta_content_scope: source.sql.embedded.perl
- match: (^SQL$)
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.quote.perl
2: punctuation.definition.heredoc.perl
pop: true
- include: scope:source.sql
- match: '((<<) *''([^'']*)'').*\n?'
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.quote.perl
2: punctuation.definition.heredoc.perl
push:
- meta_content_scope: string.unquoted.heredoc.quote.perl
- match: (^\3$)
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.quote.perl
2: punctuation.definition.heredoc.perl
pop: true
- match: '((<<) *`([^`]*)`).*\n?'
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.backtick.perl
2: punctuation.definition.heredoc.perl
push:
- meta_content_scope: string.unquoted.heredoc.backtick.perl
- match: (^\3$)
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.backtick.perl
2: punctuation.definition.heredoc.perl
pop: true
- include: escaped_char
- include: variable
- match: ((<<) *HTML\b).*\n?
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.perl
2: punctuation.definition.heredoc.perl
push:
- meta_content_scope: text.html.embedded.perl
- match: (^HTML$)
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.perl
2: punctuation.definition.heredoc.perl
pop: true
- include: escaped_char
- include: variable
- include: scope:text.html.basic
- match: ((<<) *XML\b).*\n?
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.perl
2: punctuation.definition.heredoc.perl
push:
- meta_content_scope: text.xml.embedded.perl
- match: (^XML$)
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.perl
2: punctuation.definition.heredoc.perl
pop: true
- include: escaped_char
- include: variable
- include: scope:text.xml
- match: ((<<) *SQL\b).*\n?
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.perl
2: punctuation.definition.heredoc.perl
push:
- meta_content_scope: source.sql.embedded.perl
- match: (^SQL$)
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.perl
2: punctuation.definition.heredoc.perl
pop: true
- include: escaped_char
- include: variable
- include: scope:source.sql
- match: '((<<) *((?![=\d\$ ])[^;,''"`\s)]*)).*\n?'
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.perl
2: punctuation.definition.heredoc.perl
push:
- meta_content_scope: string.unquoted.heredoc.perl
- match: (^\3$)
captures:
0: punctuation.definition.string.perl
1: string.unquoted.heredoc.perl
2: punctuation.definition.heredoc.perl
pop: true
- include: escaped_char
- include: variable
- match: '\bqq\s*([^\(\{\[\<\w\s])'
captures:
0: punctuation.definition.string.begin.perl
push:
- meta_scope: string.quoted.other.qq.perl
- match: \1
captures:
0: punctuation.definition.string.end.perl
pop: true
- include: escaped_char
- include: variable
- match: '\bqx\s*([^''\(\{\[\<\w\s])'
captures:
0: punctuation.definition.string.begin.perl
push:
- meta_scope: string.interpolated.qx.perl
- match: \1
captures:
0: punctuation.definition.string.end.perl
pop: true
- include: escaped_char
- include: variable
- match: \bqx\s*'
captures:
0: punctuation.definition.string.begin.perl
push:
- meta_scope: string.interpolated.qx.single-quote.perl
- match: "'"
captures:
0: punctuation.definition.string.end.perl
pop: true
- include: escaped_char
- match: '"'
captures:
0: punctuation.definition.string.begin.perl
push:
- meta_scope: string.quoted.double.perl
- match: '"'
captures:
0: punctuation.definition.string.end.perl
pop: true
- include: escaped_char
- include: variable
- match: '\bqw?\s*([^\(\{\[\<\w\s])'
captures:
0: punctuation.definition.string.begin.perl
push:
- meta_scope: string.quoted.other.q.perl
- match: \1
captures:
0: punctuation.definition.string.end.perl
pop: true
- include: escaped_char
- match: "'"
captures:
0: punctuation.definition.string.begin.perl
push:
- meta_scope: string.quoted.single.perl
- match: "'"
captures:
0: punctuation.definition.string.end.perl
pop: true
- match: '\\[''\\]'
scope: constant.character.escape.perl
- match: "`"
captures:
0: punctuation.definition.string.begin.perl
push:
- meta_scope: string.interpolated.perl
- match: "`"
captures:
0: punctuation.definition.string.end.perl
pop: true
- include: escaped_char
- include: variable
- match: \bqq\s*\(
captures:
0: punctuation.definition.string.begin.perl
push:
- meta_scope: string.quoted.other.qq-paren.perl
- match: \)
captures:
0: punctuation.definition.string.end.perl
pop: true
- include: escaped_char
- include: nested_parens_interpolated
- include: variable
- match: '\bqq\s*\{'
captures:
0: punctuation.definition.string.begin.perl
push:
- meta_scope: string.quoted.other.qq-brace.perl
- match: '\}'
captures:
0: punctuation.definition.string.end.perl
pop: true
- include: escaped_char
- include: nested_braces_interpolated
- include: variable
- match: '\bqq\s*\['
captures:
0: punctuation.definition.string.begin.perl
push:
- meta_scope: string.quoted.other.qq-bracket.perl
- match: '\]'
captures:
0: punctuation.definition.string.end.perl
pop: true
- include: escaped_char
- include: nested_brackets_interpolated
- include: variable
- match: \bqq\s*\<
captures:
0: punctuation.definition.string.begin.perl
push:
- meta_scope: string.quoted.other.qq-ltgt.perl
- match: \>
captures:
0: punctuation.definition.string.end.perl
pop: true
- include: escaped_char
- include: nested_ltgt_interpolated
- include: variable
- match: \bqx\s*\(
captures:
0: punctuation.definition.string.begin.perl
push:
- meta_scope: string.interpolated.qx-paren.perl
- match: \)
captures:
0: punctuation.definition.string.end.perl
pop: true
- include: escaped_char
- include: nested_parens_interpolated
- include: variable
- match: '\bqx\s*\{'
captures:
0: punctuation.definition.string.begin.perl
push:
- meta_scope: string.interpolated.qx-brace.perl
- match: '\}'
captures:
0: punctuation.definition.string.end.perl
pop: true
- include: escaped_char
- include: nested_braces_interpolated
- include: variable
- match: '\bqx\s*\['
captures:
0: punctuation.definition.string.begin.perl
push:
- meta_scope: string.interpolated.qx-bracket.perl
- match: '\]'
captures:
0: punctuation.definition.string.end.perl
pop: true
- include: escaped_char
- include: nested_brackets_interpolated
- include: variable
- match: \bqx\s*\<
captures:
0: punctuation.definition.string.begin.perl
push:
- meta_scope: string.interpolated.qx-ltgt.perl
- match: \>
captures:
0: punctuation.definition.string.end.perl
pop: true
- include: escaped_char
- include: nested_ltgt_interpolated
- include: variable
- match: \bqw?\s*\(
captures:
0: punctuation.definition.string.begin.perl
push:
- meta_scope: string.quoted.other.q-paren.perl
- match: \)
captures:
0: punctuation.definition.string.end.perl
pop: true
- include: escaped_char
- include: nested_parens
- match: '\bqw?\s*\{'
captures:
0: punctuation.definition.string.begin.perl
push:
- meta_scope: string.quoted.other.q-brace.perl
- match: '\}'
captures:
0: punctuation.definition.string.end.perl
pop: true
- include: escaped_char
- include: nested_braces
- match: '\bqw?\s*\['
captures:
0: punctuation.definition.string.begin.perl
push:
- meta_scope: string.quoted.other.q-bracket.perl
- match: '\]'
captures:
0: punctuation.definition.string.end.perl
pop: true
- include: escaped_char
- include: nested_brackets
- match: \bqw?\s*\<
captures:
0: punctuation.definition.string.begin.perl
push:
- meta_scope: string.quoted.other.q-ltgt.perl
- match: \>
captures:
0: punctuation.definition.string.end.perl
pop: true
- include: escaped_char
- include: nested_ltgt
- match: ^__\w+__
captures:
0: punctuation.definition.string.begin.perl
push:
- meta_scope: string.unquoted.program-block.perl
- match: $
captures:
0: punctuation.definition.string.end.perl
pop: true
- match: '\b(format)\s+([A-Za-z]+)\s*='
captures:
1: support.function.perl
2: entity.name.function.format.perl
push:
- meta_scope: meta.format.perl
- match: ^\.\s*$
pop: true
- 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
scope: support.function.perl
escaped_char:
- match: \\.
scope: constant.character.escape.perl
line_comment:
- match: ^((#).*$\n?)
scope: meta.comment.full-line.perl
captures:
1: comment.line.number-sign.perl
2: punctuation.definition.comment.perl
- match: (#).*$\n?
scope: comment.line.number-sign.perl
captures:
1: punctuation.definition.comment.perl
nested_braces:
- match: '\{'
captures:
1: punctuation.section.scope.perl
push:
- match: '\}'
captures:
1: punctuation.section.scope.perl
pop: true
- include: escaped_char
- include: nested_braces
nested_braces_interpolated:
- match: '\{'
captures:
1: punctuation.section.scope.perl
push:
- match: '\}'
captures:
1: punctuation.section.scope.perl
pop: true
- include: escaped_char
- include: variable
- include: nested_braces_interpolated
nested_brackets:
- match: '\['
captures:
1: punctuation.section.scope.perl
push:
- match: '\]'
captures:
1: punctuation.section.scope.perl
pop: true
- include: escaped_char
- include: nested_brackets
nested_brackets_interpolated:
- match: '\['
captures:
1: punctuation.section.scope.perl
push:
- match: '\]'
captures:
1: punctuation.section.scope.perl
pop: true
- include: escaped_char
- include: variable
- include: nested_brackets_interpolated
nested_ltgt:
- match: "<"
captures:
1: punctuation.section.scope.perl
push:
- match: ">"
captures:
1: punctuation.section.scope.perl
pop: true
- include: nested_ltgt
nested_ltgt_interpolated:
- match: "<"
captures:
1: punctuation.section.scope.perl
push:
- match: ">"
captures:
1: punctuation.section.scope.perl
pop: true
- include: variable
- include: nested_ltgt_interpolated
nested_parens:
- match: \(
captures:
1: punctuation.section.scope.perl
push:
- match: \)
captures:
1: punctuation.section.scope.perl
pop: true
- include: escaped_char
- include: nested_parens
nested_parens_interpolated:
- match: \(
captures:
1: punctuation.section.scope.perl
push:
- match: \)
captures:
1: punctuation.section.scope.perl
pop: true
- match: '\$(?=[^\s\w\''\{\[\(\<])'
comment: This is to prevent thinks like qr/foo$/ to treat $/ as a variable
scope: keyword.control.anchor.perl
- include: escaped_char
- include: variable
- include: nested_parens_interpolated
variable:
- match: '(\$)&(?![A-Za-z0-9_])'
scope: variable.other.regexp.match.perl
captures:
1: punctuation.definition.variable.perl
- match: '(\$)`(?![A-Za-z0-9_])'
scope: variable.other.regexp.pre-match.perl
captures:
1: punctuation.definition.variable.perl
- match: '(\$)''(?![A-Za-z0-9_])'
scope: variable.other.regexp.post-match.perl
captures:
1: punctuation.definition.variable.perl
- match: '(\$)\+(?![A-Za-z0-9_])'
scope: variable.other.regexp.last-paren-match.perl
captures:
1: punctuation.definition.variable.perl
- match: '(\$)"(?![A-Za-z0-9_])'
scope: variable.other.readwrite.list-separator.perl
captures:
1: punctuation.definition.variable.perl
- match: '(\$)0(?![A-Za-z0-9_])'
scope: variable.other.predefined.program-name.perl
captures:
1: punctuation.definition.variable.perl
- match: '(\$)[_ab\*\.\/\|,\\;#%=\-~^:?!\$<>\(\)\[\]@](?![A-Za-z0-9_])'
scope: variable.other.predefined.perl
captures:
1: punctuation.definition.variable.perl
- match: '(\$)[0-9]+(?![A-Za-z0-9_])'
scope: variable.other.subpattern.perl
captures:
1: punctuation.definition.variable.perl
- match: '([\$\@\%](#)?)([a-zA-Zx7f-xff\$]|::)([a-zA-Z0-9_x7f-xff\$]|::)*\b'
scope: variable.other.readwrite.global.perl
captures:
1: punctuation.definition.variable.perl
- match: '(\$\{)(?:[a-zA-Zx7f-xff\$]|::)(?:[a-zA-Z0-9_x7f-xff\$]|::)*(\})'
scope: variable.other.readwrite.global.perl
captures:
1: punctuation.definition.variable.perl
2: punctuation.definition.variable.perl
- match: '([\$\@\%](#)?)[0-9_]\b'
scope: variable.other.readwrite.global.special.perl
captures:
1: punctuation.definition.variable.perl
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment