     ]
   }
   {
-    'begin': '((<<) *XML\\b).*\\n?'
-    'captures':
-      '0':
-        'name': 'punctuation.definition.string.perl'
-      '1':
+    'begin': '(((<<) *XML\\b))(.*)\\n?'
+    'captures':
+      '1':
+        'name': 'punctuation.definition.string.perl'
+      '2':
         'name': 'string.unquoted.heredoc.perl'
-      '2':
+      '3':
         'name': 'punctuation.definition.heredoc.perl'
+      '4':
+        'patterns': [
+          {
+            'include': '$self'
+          }
+        ]
     'contentName': 'text.xml.embedded.perl'
     'end': '(^XML$)'
     'patterns': [

    'name': 'keyword.operator.comparison.perl'
  }
  {
    'begin': '((<<) *"HTML").*\\n?'
    'captures':
      '0':
        'name': 'punctuation.definition.string.perl'
      '1':
        'name': 'string.unquoted.heredoc.doublequote.perl'
      '2':
        'name': 'punctuation.definition.heredoc.perl'
    'contentName': 'text.html.embedded.perl'
    'end': '(^HTML$)'
    'patterns': [

    ]
  }
  {
    'begin': '(((<<) *\'POSTSCRIPT\'))(.*)\\n?'
    'captures':
      '1':
        'name': 'punctuation.definition.string.perl'
      '2':
        'name': 'string.unquoted.heredoc.quote.perl'
      '3':
        'name': 'punctuation.definition.heredoc.perl'
      '4':
        'patterns': [
          {
            'include': '$self'
          }
        ]
    'contentName': 'source.postscript.embedded.perl'
    'end': '(^POSTSCRIPT)'
    'patterns': [
