<patterns>
 <class pattern="\.pr?(l|m)$" icon="text-x-script.png" name="perl" >

<!--Options-->
  <Option>
   <Name>wrap</Name>
   <Value>0</Value>
   <flags>2</flags>
  </Option>
  <Option>
   <Name>emulate_tabs</Name>
   <Value>1</Value>
   <flags>2</flags>
  </Option>
  <Option>
   <Name>tab_size</Name>
   <Value>4</Value>
   <flags>2</flags>
  </Option>
  <Option>
   <Name>default</Name>
   <Value>0</Value>
   <flags>2</flags>
  </Option>
  <Option>
   <Name>base_indentation</Name>
   <Value>0</Value>
   <flags>2</flags>
  </Option>

<!--Highlight styles-->
  <style format="2" name="Comment" color="#ff8c00" />
  <style format="0" name="End Of Line" color="#a90000" />
  <style format="0" name="Function" color="#d2691e" />
  <style format="0" name="Keyword" color="#0000ff" />
  <style format="0" name="Keyword2" color="#0000aa" />
  <style format="2" name="Keyword3" color="#00cd00" />
  <style format="2" name="Keyword4" color="#2e8b2e" />
  <style format="0" name="Numeric Constants" color="#808000" />
  <style format="0" name="String" color="#00cd00" />
  <style format="0" name="String2" color="#2e8b2e" />
  <style format="2" name="Tag" color="#ff0000" />

<!--Highlight patterns-->
  <keyword_pattern style="End Of Line" parent="" name="End Of Line" >
   <comments></comments>
   <keyword>;\s*$</keyword>
  </keyword_pattern>
  <keyword_pattern style="Keyword" parent="" name="Braces" >
   <comments></comments>
   <keyword>((\{|\[|\(|\)|\]|\})*(\{|\[|\(|\)|\]|\})(\{|\[|\(|\)|\]|\})*)</keyword>
  </keyword_pattern>
  <keyword_pattern style="Numeric Constants" parent="" name="Numeric Constants" >
   <comments></comments>
   <keyword>\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\b</keyword>
  </keyword_pattern>
  <range_pattern style="String" parent="" name="String" >
   <comments></comments>
   <begin>XML_QUOTE</begin>
   <end>([^\\]XML_QUOTE|$)</end>
  </range_pattern>
  <range_pattern style="String2" parent="" name="String2" >
   <comments></comments>
   <begin>'</begin>
   <end>([^\\]'|$)</end>
  </range_pattern>
  <range_pattern style="String2" parent="" name="String3" >
   <comments></comments>
   <begin>`</begin>
   <end>([^\\]`|$)</end>
  </range_pattern>
  <keyword_pattern style="String2" parent="String" name="String Escape Character" >
   <comments></comments>
   <keyword>\\(.|\n)</keyword>
  </keyword_pattern>
  <keyword_pattern style="Keyword2" parent="" name="Variable" >
   <comments></comments>
   <keyword>(\$|@|%)#?(\w+)\b</keyword>
  </keyword_pattern>
  <keyword_pattern style="Keyword3" parent="String" name="Variable2" >
   <comments></comments>
   <keyword>(\$|@)#?(\w+)\b</keyword>
  </keyword_pattern>
  <keyword_pattern style="Keyword4" parent="String2" name="Variable3" >
   <comments></comments>
   <keyword>\$#?(\w+)\b</keyword>
  </keyword_pattern>
  <keyword_pattern style="Keyword4" parent="String3" name="Variable4" >
   <comments></comments>
   <keyword>\$#?(\w+)\b</keyword>
  </keyword_pattern>
  <keyword_pattern style="Keyword" parent="" name="Keyword" >
   <comments></comments>
   <keyword>\b(if|foreach|use|els(e|if)|push|sub|print|my|return|chdir|chomp|next|last|redo|exit)\b</keyword>
  </keyword_pattern>
  <range_pattern options="no_indent comments" style="Comment" parent="" name="Comment" >
   <comments></comments>
   <begin>#</begin>
   <end>$</end>
  </range_pattern>
  <keyword_pattern style="Tag" parent="" name="Tag" >
   <comments></comments>
   <keyword>(^[A-Z]+\s*:)|(\bgoto\s+[A-Z]+\b)</keyword>
  </keyword_pattern>
  <keyword_pattern style="Keyword" parent="Tag" name="Tag Keyword" >
   <comments></comments>
   <keyword>\b(goto)\b</keyword>
  </keyword_pattern>
  <keyword_pattern style="Function" parent="" name="Function" >
   <comments></comments>
   <keyword>(\b|XML_AND)(\w+)\s*(?=\()</keyword>
  </keyword_pattern>

<!--Indentation patterns-->
  <indent_pattern type="0" name="0" >
   <rule par="0" >
    <regexp>^\s*\}</regexp>
   </rule>
   <rule par="-1" >
    <regexp>(\{\s*)($|#)</regexp>
   </rule>
  </indent_pattern>
  <indent_pattern type="1" name="1" >
   <rule par="-1" >
    <regexp>(\{\s*)($|#)</regexp>
   </rule>
  </indent_pattern>
  <indent_pattern scale="2" type="2" name="2" >
   <rule par="-1" >
    <regexp>(;\s*($|#))</regexp>
   </rule>
   <rule par="-2" >
    <regexp>[^;|\{|\}\s*]\s*($|#)</regexp>
   </rule>
   <rule par="0" >
    <regexp>^\s*\}</regexp>
   </rule>
  </indent_pattern>
  <indent_pattern type="2" name="3" >
   <rule par="0" >
    <regexp>^\s*\}</regexp>
   </rule>
  </indent_pattern>
  <indent_pattern type="2" name="4" >
   <rule par="0" >
    <regexp>^\s*\{</regexp>
   </rule>
   <rule par="-1" >
    <regexp>[^;\s*]\s*($|#)</regexp>
   </rule>
   <rule par="-2" >
    <regexp>[^;|\}|\{|:\s*]\s*($|#)</regexp>
   </rule>
  </indent_pattern>
  <indent_pattern type="0" name="5" >
   <rule par="0" >
    <regexp>^\s*\{</regexp>
   </rule>
   <rule par="-1" >
    <regexp>[^;\s*]\s*($|#)</regexp>
   </rule>
   <rule par="-2" >
    <regexp>(;|\{|\})\s*($|#)</regexp>
   </rule>
  </indent_pattern>
  <indent_pattern type="0" name="6" >
   <rule par="-1" >
    <regexp>((\}|(\}\s*;))\s*($|#))</regexp>
   </rule>
  </indent_pattern>
  <indent_pattern type="0" name="6.1" >
   <rule par="-1" >
    <regexp>(;\s*#)</regexp>
   </rule>
  </indent_pattern>
  <indent_pattern type="1" name="7" >
   <rule par="-1" >
    <regexp>([^;\s*]\s*$)</regexp>
   </rule>
   <rule par="-2" >
    <regexp>((;|\{|\})\s*($|#))</regexp>
   </rule>
  </indent_pattern>
  <indent_pattern type="0" name="8" >
   <rule par="-1" >
    <regexp>(;\s*($|#))</regexp>
   </rule>
   <rule par="-2" >
    <regexp>((\{|\})\s*($|#))|(;\s*($|#))</regexp>
   </rule>
  </indent_pattern>
  <indent_pattern type="2" name="9" >
   <rule par="-1" >
    <regexp>(;\s*($|#))</regexp>
   </rule>
   <rule par="-2" >
    <regexp>[^;\s*]\s*($|#)</regexp>
   </rule>
  </indent_pattern>

<!--Parenthesis-->
  <parenthesis begin="(" end=")" regexp="\(|\)" />
  <parenthesis begin="[" end="]" regexp="\[|\]" />
  <parenthesis begin="{" end="}" regexp="\{|\}" />

<!--Block delimiters-->
  <block_delimiter begin="{" end="}" regexp="\{|\}" />

<!--Text macros-->
  <macro accelerator="Alt+T" name="Add one tab indentation" >
   <rule>
    <regexp>^</regexp>
    <replacement>XML_TAB</replacement>
   </rule>
  </macro>
  <macro accelerator="Shift+Alt+T" name="Remove one tab indentation" >
   <rule>
    <regexp>^\t</regexp>
    <replacement></replacement>
   </rule>
  </macro>
  <macro name="Remove all tab indentations" >
   <rule>
    <regexp>^\s+</regexp>
    <replacement></replacement>
   </rule>
  </macro>
  <macro name="Clean end of line" options="automatic" >
   <rule>
    <regexp>\s+$</regexp>
    <replacement></replacement>
   </rule>
  </macro>
  <macro options="separator" name="generic" />
  <macro accelerator="Alt+C" name="Add comments" >
   <rule>
    <regexp>^</regexp>
    <replacement># </replacement>
   </rule>
  </macro>
  <macro accelerator="Shift+Alt+C" name="Remove comments" >
   <rule>
    <regexp>^# </regexp>
    <replacement></replacement>
   </rule>
  </macro>
 </class>
</patterns>
