PluginProbe
Code Block Pro – Beautiful Syntax Highlighting / 1.8.0
Code Block Pro – Beautiful Syntax Highlighting v1.8.0
1.27.1 1.27.2 1.27.3 1.27.4 1.27.5 1.27.6 1.27.7 1.28.0 1.3.0 1.4.0 1.5.0 1.5.1 1.5.2 1.6.0 1.7.0 1.8.0 1.9.0 1.9.1 1.9.2 1.9.3 trunk 1.1.0 1.10.0 1.11.0 1.11.1 All 63 releases
code-block-pro / build / shiki / languages / perl.tmLanguage.json

perl.tmLanguage.json in Code Block Pro – Beautiful Syntax Highlighting 1.8.0, at build/shiki/languages/perl.tmLanguage.json

2,978 lines 77.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 {
2 "information_for_contributors": [
3 "This file has been converted from https://github.com/textmate/perl.tmbundle/blob/master/Syntaxes/Perl.plist",
4 "If you want to provide a fix or improvement, please create a pull request against the original repository.",
5 "Once accepted there, we are happy to receive an update request."
6 ],
7 "version": "https://github.com/textmate/perl.tmbundle/commit/a85927a902d6e5d7805f56a653f324d34dfad53a",
8 "name": "perl",
9 "scopeName": "source.perl",
10 "comment": "\n\tTODO:\tInclude RegExp syntax\n",
11 "patterns": [
12 {
13 "include": "#line_comment"
14 },
15 {
16 "begin": "^(?==[a-zA-Z]+)",
17 "end": "^(=cut\\b.*$)",
18 "endCaptures": {
19 "1": {
20 "patterns": [
21 {
22 "include": "#pod"
23 }
24 ]
25 }
26 },
27 "name": "comment.block.documentation.perl",
28 "patterns": [
29 {
30 "include": "#pod"
31 }
32 ]
33 },
34 {
35 "include": "#variable"
36 },
37 {
38 "applyEndPatternLast": 1,
39 "begin": "\\b(?=qr\\s*[^\\s\\w])",
40 "comment": "string.regexp.compile.perl",
41 "end": "((([egimosxradlupcn]*)))(?=(\\s+\\S|\\s*[;\\,\\#\\{\\}\\)]|\\s*$))",
42 "endCaptures": {
43 "1": {
44 "name": "string.regexp.compile.perl"
45 },
46 "2": {
47 "name": "punctuation.definition.string.perl"
48 },
49 "3": {
50 "name": "keyword.control.regexp-option.perl"
51 }
52 },
53 "patterns": [
54 {
55 "begin": "(qr)\\s*\\{",
56 "captures": {
57 "0": {
58 "name": "punctuation.definition.string.perl"
59 },
60 "1": {
61 "name": "support.function.perl"
62 }
63 },
64 "end": "\\}",
65 "name": "string.regexp.compile.nested_braces.perl",
66 "patterns": [
67 {
68 "include": "#escaped_char"
69 },
70 {
71 "include": "#variable"
72 },
73 {
74 "include": "#nested_braces_interpolated"
75 }
76 ]
77 },
78 {
79 "begin": "(qr)\\s*\\[",
80 "captures": {
81 "0": {
82 "name": "punctuation.definition.string.perl"
83 },
84 "1": {
85 "name": "support.function.perl"
86 }
87 },
88 "end": "\\]",
89 "name": "string.regexp.compile.nested_brackets.perl",
90 "patterns": [
91 {
92 "include": "#escaped_char"
93 },
94 {
95 "include": "#variable"
96 },
97 {
98 "include": "#nested_brackets_interpolated"
99 }
100 ]
101 },
102 {
103 "begin": "(qr)\\s*<",
104 "captures": {
105 "0": {
106 "name": "punctuation.definition.string.perl"
107 },
108 "1": {
109 "name": "support.function.perl"
110 }
111 },
112 "end": ">",
113 "name": "string.regexp.compile.nested_ltgt.perl",
114 "patterns": [
115 {
116 "include": "#escaped_char"
117 },
118 {
119 "include": "#variable"
120 },
121 {
122 "include": "#nested_ltgt_interpolated"
123 }
124 ]
125 },
126 {
127 "begin": "(qr)\\s*\\(",
128 "captures": {
129 "0": {
130 "name": "punctuation.definition.string.perl"
131 },
132 "1": {
133 "name": "support.function.perl"
134 }
135 },
136 "end": "\\)",
137 "name": "string.regexp.compile.nested_parens.perl",
138 "patterns": [
139 {
140 "comment": "This is to prevent thinks like qr/foo$/ to treat $/ as a variable",
141 "match": "\\$(?=[^\\s\\w\\\\'\\{\\[\\(\\<])"
142 },
143 {
144 "include": "#escaped_char"
145 },
146 {
147 "include": "#variable"
148 },
149 {
150 "include": "#nested_parens_interpolated"
151 }
152 ]
153 },
154 {
155 "begin": "(qr)\\s*'",
156 "captures": {
157 "0": {
158 "name": "punctuation.definition.string.perl"
159 },
160 "1": {
161 "name": "support.function.perl"
162 }
163 },
164 "end": "'",
165 "name": "string.regexp.compile.single-quote.perl",
166 "patterns": [
167 {
168 "include": "#escaped_char"
169 }
170 ]
171 },
172 {
173 "begin": "(qr)\\s*([^\\s\\w'\\{\\[\\(\\<])",
174 "captures": {
175 "0": {
176 "name": "punctuation.definition.string.perl"
177 },
178 "1": {
179 "name": "support.function.perl"
180 }
181 },
182 "end": "\\2",
183 "name": "string.regexp.compile.simple-delimiter.perl",
184 "patterns": [
185 {
186 "comment": "This is to prevent thinks like qr/foo$/ to treat $/ as a variable",
187 "match": "\\$(?=[^\\s\\w'\\{\\[\\(\\<])",
188 "name": "keyword.control.anchor.perl"
189 },
190 {
191 "include": "#escaped_char"
192 },
193 {
194 "include": "#variable"
195 },
196 {
197 "include": "#nested_parens_interpolated"
198 }
199 ]
200 }
201 ]
202 },
203 {
204 "applyEndPatternLast": 1,
205 "begin": "(?<!\\{|\\+|\\-)\\b(?=m\\s*[^\\sa-zA-Z0-9])",
206 "comment": "string.regexp.find-m.perl",
207 "end": "((([egimosxradlupcn]*)))(?=(\\s+\\S|\\s*[;\\,\\#\\{\\}\\)]|\\s*$))",
208 "endCaptures": {
209 "1": {
210 "name": "string.regexp.find-m.perl"
211 },
212 "2": {
213 "name": "punctuation.definition.string.perl"
214 },
215 "3": {
216 "name": "keyword.control.regexp-option.perl"
217 }
218 },
219 "patterns": [
220 {
221 "begin": "(m)\\s*\\{",
222 "captures": {
223 "0": {
224 "name": "punctuation.definition.string.perl"
225 },
226 "1": {
227 "name": "support.function.perl"
228 }
229 },
230 "end": "\\}",
231 "name": "string.regexp.find-m.nested_braces.perl",
232 "patterns": [
233 {
234 "include": "#escaped_char"
235 },
236 {
237 "include": "#variable"
238 },
239 {
240 "include": "#nested_braces_interpolated"
241 }
242 ]
243 },
244 {
245 "begin": "(m)\\s*\\[",
246 "captures": {
247 "0": {
248 "name": "punctuation.definition.string.perl"
249 },
250 "1": {
251 "name": "support.function.perl"
252 }
253 },
254 "end": "\\]",
255 "name": "string.regexp.find-m.nested_brackets.perl",
256 "patterns": [
257 {
258 "include": "#escaped_char"
259 },
260 {
261 "include": "#variable"
262 },
263 {
264 "include": "#nested_brackets_interpolated"
265 }
266 ]
267 },
268 {
269 "begin": "(m)\\s*<",
270 "captures": {
271 "0": {
272 "name": "punctuation.definition.string.perl"
273 },
274 "1": {
275 "name": "support.function.perl"
276 }
277 },
278 "end": ">",
279 "name": "string.regexp.find-m.nested_ltgt.perl",
280 "patterns": [
281 {
282 "include": "#escaped_char"
283 },
284 {
285 "include": "#variable"
286 },
287 {
288 "include": "#nested_ltgt_interpolated"
289 }
290 ]
291 },
292 {
293 "begin": "(m)\\s*\\(",
294 "captures": {
295 "0": {
296 "name": "punctuation.definition.string.perl"
297 },
298 "1": {
299 "name": "support.function.perl"
300 }
301 },
302 "end": "\\)",
303 "name": "string.regexp.find-m.nested_parens.perl",
304 "patterns": [
305 {
306 "include": "#escaped_char"
307 },
308 {
309 "include": "#variable"
310 },
311 {
312 "include": "#nested_parens_interpolated"
313 }
314 ]
315 },
316 {
317 "begin": "(m)\\s*'",
318 "captures": {
319 "0": {
320 "name": "punctuation.definition.string.perl"
321 },
322 "1": {
323 "name": "support.function.perl"
324 }
325 },
326 "end": "'",
327 "name": "string.regexp.find-m.single-quote.perl",
328 "patterns": [
329 {
330 "include": "#escaped_char"
331 }
332 ]
333 },
334 {
335 "begin": "\\G(?<!\\{|\\+|\\-)(m)(?!_)\\s*([^\\sa-zA-Z0-9'\\{\\[\\(\\<])",
336 "captures": {
337 "0": {
338 "name": "punctuation.definition.string.perl"
339 },
340 "1": {
341 "name": "support.function.perl"
342 }
343 },
344 "end": "\\2",
345 "name": "string.regexp.find-m.simple-delimiter.perl",
346 "patterns": [
347 {
348 "comment": "This is to prevent thinks like qr/foo$/ to treat $/ as a variable",
349 "match": "\\$(?=[^\\sa-zA-Z0-9'\\{\\[\\(\\<])",
350 "name": "keyword.control.anchor.perl"
351 },
352 {
353 "include": "#escaped_char"
354 },
355 {
356 "include": "#variable"
357 },
358 {
359 "begin": "\\[",
360 "beginCaptures": {
361 "1": {
362 "name": "punctuation.definition.character-class.begin.perl"
363 }
364 },
365 "end": "\\]",
366 "endCaptures": {
367 "1": {
368 "name": "punctuation.definition.character-class.end.perl"
369 }
370 },
371 "name": "constant.other.character-class.set.perl",
372 "patterns": [
373 {
374 "comment": "This is to prevent thinks like qr/foo$/ to treat $/ as a variable",
375 "match": "\\$(?=[^\\s\\w'\\{\\[\\(\\<])",
376 "name": "keyword.control.anchor.perl"
377 },
378 {
379 "include": "#escaped_char"
380 }
381 ]
382 },
383 {
384 "include": "#nested_parens_interpolated"
385 }
386 ]
387 }
388 ]
389 },
390 {
391 "applyEndPatternLast": 1,
392 "begin": "\\b(?=(?<!\\&)(s)(\\s+\\S|\\s*[;\\,\\{\\}\\(\\)\\[<]|$))",
393 "comment": "string.regexp.replace.perl",
394 "end": "((([egimosxradlupcn]*)))(?=(\\s+\\S|\\s*[;\\,\\{\\}\\)\\]>]|\\s*$))",
395 "endCaptures": {
396 "1": {
397 "name": "string.regexp.replace.perl"
398 },
399 "2": {
400 "name": "punctuation.definition.string.perl"
401 },
402 "3": {
403 "name": "keyword.control.regexp-option.perl"
404 }
405 },
406 "patterns": [
407 {
408 "begin": "(s)\\s*\\{",
409 "captures": {
410 "0": {
411 "name": "punctuation.definition.string.perl"
412 },
413 "1": {
414 "name": "support.function.perl"
415 }
416 },
417 "end": "\\}",
418 "name": "string.regexp.nested_braces.perl",
419 "patterns": [
420 {
421 "include": "#escaped_char"
422 },
423 {
424 "include": "#nested_braces"
425 }
426 ]
427 },
428 {
429 "begin": "(s)\\s*\\[",
430 "captures": {
431 "0": {
432 "name": "punctuation.definition.string.perl"
433 },
434 "1": {
435 "name": "support.function.perl"
436 }
437 },
438 "end": "\\]",
439 "name": "string.regexp.nested_brackets.perl",
440 "patterns": [
441 {
442 "include": "#escaped_char"
443 },
444 {
445 "include": "#nested_brackets"
446 }
447 ]
448 },
449 {
450 "begin": "(s)\\s*<",
451 "captures": {
452 "0": {
453 "name": "punctuation.definition.string.perl"
454 },
455 "1": {
456 "name": "support.function.perl"
457 }
458 },
459 "end": ">",
460 "name": "string.regexp.nested_ltgt.perl",
461 "patterns": [
462 {
463 "include": "#escaped_char"
464 },
465 {
466 "include": "#nested_ltgt"
467 }
468 ]
469 },
470 {
471 "begin": "(s)\\s*\\(",
472 "captures": {
473 "0": {
474 "name": "punctuation.definition.string.perl"
475 },
476 "1": {
477 "name": "support.function.perl"
478 }
479 },
480 "end": "\\)",
481 "name": "string.regexp.nested_parens.perl",
482 "patterns": [
483 {
484 "include": "#escaped_char"
485 },
486 {
487 "include": "#nested_parens"
488 }
489 ]
490 },
491 {
492 "begin": "\\{",
493 "captures": {
494 "0": {
495 "name": "punctuation.definition.string.perl"
496 }
497 },
498 "end": "\\}",
499 "name": "string.regexp.format.nested_braces.perl",
500 "patterns": [
501 {
502 "include": "#escaped_char"
503 },
504 {
505 "include": "#variable"
506 },
507 {
508 "include": "#nested_braces_interpolated"
509 }
510 ]
511 },
512 {
513 "begin": "\\[",
514 "captures": {
515 "0": {
516 "name": "punctuation.definition.string.perl"
517 }
518 },
519 "end": "\\]",
520 "name": "string.regexp.format.nested_brackets.perl",
521 "patterns": [
522 {
523 "include": "#escaped_char"
524 },
525 {
526 "include": "#variable"
527 },
528 {
529 "include": "#nested_brackets_interpolated"
530 }
531 ]
532 },
533 {
534 "begin": "<",
535 "captures": {
536 "0": {
537 "name": "punctuation.definition.string.perl"
538 }
539 },
540 "end": ">",
541 "name": "string.regexp.format.nested_ltgt.perl",
542 "patterns": [
543 {
544 "include": "#escaped_char"
545 },
546 {
547 "include": "#variable"
548 },
549 {
550 "include": "#nested_ltgt_interpolated"
551 }
552 ]
553 },
554 {
555 "begin": "\\(",
556 "captures": {
557 "0": {
558 "name": "punctuation.definition.string.perl"
559 }
560 },
561 "end": "\\)",
562 "name": "string.regexp.format.nested_parens.perl",
563 "patterns": [
564 {
565 "include": "#escaped_char"
566 },
567 {
568 "include": "#variable"
569 },
570 {
571 "include": "#nested_parens_interpolated"
572 }
573 ]
574 },
575 {
576 "begin": "'",
577 "captures": {
578 "0": {
579 "name": "punctuation.definition.string.perl"
580 }
581 },
582 "end": "'",
583 "name": "string.regexp.format.single_quote.perl",
584 "patterns": [
585 {
586 "match": "\\\\['\\\\]",
587 "name": "constant.character.escape.perl"
588 }
589 ]
590 },
591 {
592 "begin": "([^\\s\\w\\[({<;])",
593 "captures": {
594 "0": {
595 "name": "punctuation.definition.string.perl"
596 }
597 },
598 "end": "\\1",
599 "name": "string.regexp.format.simple_delimiter.perl",
600 "patterns": [
601 {
602 "include": "#escaped_char"
603 },
604 {
605 "include": "#variable"
606 }
607 ]
608 },
609 {
610 "match": "\\s+"
611 }
612 ]
613 },
614 {
615 "begin": "\\b(?=s([^\\sa-zA-Z0-9\\[({<]).*\\1([egimosxradlupcn]*)([\\}\\)\\;\\,]|\\s+))",
616 "comment": "string.regexp.replaceXXX",
617 "end": "((([egimosxradlupcn]*)))(?=([\\}\\)\\;\\,]|\\s+|\\s*$))",
618 "endCaptures": {
619 "1": {
620 "name": "string.regexp.replace.perl"
621 },
622 "2": {
623 "name": "punctuation.definition.string.perl"
624 },
625 "3": {
626 "name": "keyword.control.regexp-option.perl"
627 }
628 },
629 "patterns": [
630 {
631 "begin": "(s\\s*)([^\\sa-zA-Z0-9\\[({<])",
632 "captures": {
633 "0": {
634 "name": "punctuation.definition.string.perl"
635 },
636 "1": {
637 "name": "support.function.perl"
638 }
639 },
640 "end": "(?=\\2)",
641 "name": "string.regexp.replaceXXX.simple_delimiter.perl",
642 "patterns": [
643 {
644 "include": "#escaped_char"
645 }
646 ]
647 },
648 {
649 "begin": "'",
650 "captures": {
651 "0": {
652 "name": "punctuation.definition.string.perl"
653 }
654 },
655 "end": "'",
656 "name": "string.regexp.replaceXXX.format.single_quote.perl",
657 "patterns": [
658 {
659 "match": "\\\\['\\\\]",
660 "name": "constant.character.escape.perl.perl"
661 }
662 ]
663 },
664 {
665 "begin": "([^\\sa-zA-Z0-9\\[({<])",
666 "captures": {
667 "0": {
668 "name": "punctuation.definition.string.perl"
669 }
670 },
671 "end": "\\1",
672 "name": "string.regexp.replaceXXX.format.simple_delimiter.perl",
673 "patterns": [
674 {
675 "include": "#escaped_char"
676 },
677 {
678 "include": "#variable"
679 }
680 ]
681 }
682 ]
683 },
684 {
685 "begin": "\\b(?=(?<!\\\\)s\\s*([^\\s\\w\\[({<>]))",
686 "comment": "string.regexp.replace.extended",
687 "end": "((([egimosradlupc]*x[egimosradlupc]*)))\\b",
688 "endCaptures": {
689 "1": {
690 "name": "string.regexp.replace.perl"
691 },
692 "2": {
693 "name": "punctuation.definition.string.perl"
694 },
695 "3": {
696 "name": "keyword.control.regexp-option.perl"
697 }
698 },
699 "patterns": [
700 {
701 "begin": "(s)\\s*(.)",
702 "captures": {
703 "0": {
704 "name": "punctuation.definition.string.perl"
705 },
706 "1": {
707 "name": "support.function.perl"
708 }
709 },
710 "end": "(?=\\2)",
711 "name": "string.regexp.replace.extended.simple_delimiter.perl",
712 "patterns": [
713 {
714 "include": "#escaped_char"
715 }
716 ]
717 },
718 {
719 "begin": "'",
720 "captures": {
721 "0": {
722 "name": "punctuation.definition.string.perl"
723 }
724 },
725 "end": "'(?=[egimosradlupc]*x[egimosradlupc]*)\\b",
726 "name": "string.regexp.replace.extended.simple_delimiter.perl",
727 "patterns": [
728 {
729 "include": "#escaped_char"
730 }
731 ]
732 },
733 {
734 "begin": "(.)",
735 "captures": {
736 "0": {
737 "name": "punctuation.definition.string.perl"
738 }
739 },
740 "end": "\\1(?=[egimosradlupc]*x[egimosradlupc]*)\\b",
741 "name": "string.regexp.replace.extended.simple_delimiter.perl",
742 "patterns": [
743 {
744 "include": "#escaped_char"
745 },
746 {
747 "include": "#variable"
748 }
749 ]
750 }
751 ]
752 },
753 {
754 "begin": "(?<=\\(|\\{|~|&|\\||if|unless|^)\\s*((\\/))",
755 "beginCaptures": {
756 "1": {
757 "name": "string.regexp.find.perl"
758 },
759 "2": {
760 "name": "punctuation.definition.string.perl"
761 }
762 },
763 "contentName": "string.regexp.find.perl",
764 "end": "((\\1([egimosxradlupcn]*)))(?=(\\s+\\S|\\s*[;\\,\\#\\{\\}\\)]|\\s*$))",
765 "endCaptures": {
766 "1": {
767 "name": "string.regexp.find.perl"
768 },
769 "2": {
770 "name": "punctuation.definition.string.perl"
771 },
772 "3": {
773 "name": "keyword.control.regexp-option.perl"
774 }
775 },
776 "patterns": [
777 {
778 "comment": "This is to prevent thinks like /foo$/ to treat $/ as a variable",
779 "match": "\\$(?=\\/)",
780 "name": "keyword.control.anchor.perl"
781 },
782 {
783 "include": "#escaped_char"
784 },
785 {
786 "include": "#variable"
787 }
788 ]
789 },
790 {
791 "captures": {
792 "1": {
793 "name": "constant.other.key.perl"
794 }
795 },
796 "match": "\\b(\\w+)\\s*(?==>)"
797 },
798 {
799 "match": "(?<={)\\s*\\w+\\s*(?=})",
800 "name": "constant.other.bareword.perl"
801 },
802 {
803 "captures": {
804 "1": {
805 "name": "keyword.control.perl"
806 },
807 "2": {
808 "name": "entity.name.type.class.perl"
809 }
810 },
811 "match": "^\\s*(package)\\s+([^\\s;]+)",
812 "name": "meta.class.perl"
813 },
814 {
815 "captures": {
816 "1": {
817 "name": "storage.type.sub.perl"
818 },
819 "2": {
820 "name": "entity.name.function.perl"
821 },
822 "3": {
823 "name": "storage.type.method.perl"
824 }
825 },
826 "match": "\\b(sub)(?:\\s+([-a-zA-Z0-9_]+))?\\s*(?:\\([\\$\\@\\*;]*\\))?[^\\w\\{]",
827 "name": "meta.function.perl"
828 },
829 {
830 "captures": {
831 "1": {
832 "name": "entity.name.function.perl"
833 },
834 "2": {
835 "name": "punctuation.definition.parameters.perl"
836 },
837 "3": {
838 "name": "variable.parameter.function.perl"
839 }
840 },
841 "match": "^\\s*(BEGIN|UNITCHECK|CHECK|INIT|END|DESTROY)\\b",
842 "name": "meta.function.perl"
843 },
844 {
845 "begin": "^(?=(\\t| {4}))",
846 "end": "(?=[^\\t\\s])",
847 "name": "meta.leading-tabs",
848 "patterns": [
849 {
850 "captures": {
851 "1": {
852 "name": "meta.odd-tab"
853 },
854 "2": {
855 "name": "meta.even-tab"
856 }
857 },
858 "match": "(\\t| {4})(\\t| {4})?"
859 }
860 ]
861 },
862 {
863 "captures": {
864 "1": {
865 "name": "support.function.perl"
866 },
867 "2": {
868 "name": "punctuation.definition.string.perl"
869 },
870 "5": {
871 "name": "punctuation.definition.string.perl"
872 },
873 "8": {
874 "name": "punctuation.definition.string.perl"
875 }
876 },
877 "match": "\\b(tr|y)\\s*([^A-Za-z0-9\\s])(.*?)(?<!\\\\)(\\\\{2})*(\\2)(.*?)(?<!\\\\)(\\\\{2})*(\\2)",
878 "name": "string.regexp.replace.perl"
879 },
880 {
881 "match": "\\b(__FILE__|__LINE__|__PACKAGE__|__SUB__)\\b",
882 "name": "constant.language.perl"
883 },
884 {
885 "begin": "\\b(__DATA__|__END__)\\n?",
886 "beginCaptures": {
887 "1": {
888 "name": "constant.language.perl"
889 }
890 },
891 "contentName": "comment.block.documentation.perl",
892 "end": "\\z",
893 "patterns": [
894 {
895 "include": "#pod"
896 }
897 ]
898 },
899 {
900 "match": "(?<!->)\\b(continue|default|die|do|else|elsif|exit|for|foreach|given|goto|if|last|next|redo|return|select|unless|until|wait|when|while|switch|case|require|use|eval)\\b",
901 "name": "keyword.control.perl"
902 },
903 {
904 "match": "\\b(my|our|local)\\b",
905 "name": "storage.modifier.perl"
906 },
907 {
908 "match": "(?<!\\w)\\-[rwxoRWXOezsfdlpSbctugkTBMAC]\\b",
909 "name": "keyword.operator.filetest.perl"
910 },
911 {
912 "match": "\\b(and|or|xor|as|not)\\b",
913 "name": "keyword.operator.logical.perl"
914 },
915 {
916 "match": "(<=>|=>|->)",
917 "name": "keyword.operator.comparison.perl"
918 },
919 {
920 "include": "#heredoc"
921 },
922 {
923 "begin": "\\bqq\\s*([^\\(\\{\\[\\<\\w\\s])",
924 "beginCaptures": {
925 "0": {
926 "name": "punctuation.definition.string.begin.perl"
927 }
928 },
929 "end": "\\1",
930 "endCaptures": {
931 "0": {
932 "name": "punctuation.definition.string.end.perl"
933 }
934 },
935 "name": "string.quoted.other.qq.perl",
936 "patterns": [
937 {
938 "include": "#escaped_char"
939 },
940 {
941 "include": "#variable"
942 }
943 ]
944 },
945 {
946 "begin": "\\bqx\\s*([^'\\(\\{\\[\\<\\w\\s])",
947 "beginCaptures": {
948 "0": {
949 "name": "punctuation.definition.string.begin.perl"
950 }
951 },
952 "end": "\\1",
953 "endCaptures": {
954 "0": {
955 "name": "punctuation.definition.string.end.perl"
956 }
957 },
958 "name": "string.interpolated.qx.perl",
959 "patterns": [
960 {
961 "include": "#escaped_char"
962 },
963 {
964 "include": "#variable"
965 }
966 ]
967 },
968 {
969 "begin": "\\bqx\\s*'",
970 "beginCaptures": {
971 "0": {
972 "name": "punctuation.definition.string.begin.perl"
973 }
974 },
975 "end": "'",
976 "endCaptures": {
977 "0": {
978 "name": "punctuation.definition.string.end.perl"
979 }
980 },
981 "name": "string.interpolated.qx.single-quote.perl",
982 "patterns": [
983 {
984 "include": "#escaped_char"
985 }
986 ]
987 },
988 {
989 "begin": "\"",
990 "beginCaptures": {
991 "0": {
992 "name": "punctuation.definition.string.begin.perl"
993 }
994 },
995 "end": "\"",
996 "endCaptures": {
997 "0": {
998 "name": "punctuation.definition.string.end.perl"
999 }
1000 },
1001 "name": "string.quoted.double.perl",
1002 "patterns": [
1003 {
1004 "include": "#escaped_char"
1005 },
1006 {
1007 "include": "#variable"
1008 }
1009 ]
1010 },
1011 {
1012 "begin": "(?<!->)\\bqw?\\s*([^\\(\\{\\[\\<\\w\\s])",
1013 "beginCaptures": {
1014 "0": {
1015 "name": "punctuation.definition.string.begin.perl"
1016 }
1017 },
1018 "end": "\\1",
1019 "endCaptures": {
1020 "0": {
1021 "name": "punctuation.definition.string.end.perl"
1022 }
1023 },
1024 "name": "string.quoted.other.q.perl"
1025 },
1026 {
1027 "begin": "'",
1028 "beginCaptures": {
1029 "0": {
1030 "name": "punctuation.definition.string.begin.perl"
1031 }
1032 },
1033 "end": "'",
1034 "endCaptures": {
1035 "0": {
1036 "name": "punctuation.definition.string.end.perl"
1037 }
1038 },
1039 "name": "string.quoted.single.perl",
1040 "patterns": [
1041 {
1042 "match": "\\\\['\\\\]",
1043 "name": "constant.character.escape.perl"
1044 }
1045 ]
1046 },
1047 {
1048 "begin": "`",
1049 "beginCaptures": {
1050 "0": {
1051 "name": "punctuation.definition.string.begin.perl"
1052 }
1053 },
1054 "end": "`",
1055 "endCaptures": {
1056 "0": {
1057 "name": "punctuation.definition.string.end.perl"
1058 }
1059 },
1060 "name": "string.interpolated.perl",
1061 "patterns": [
1062 {
1063 "include": "#escaped_char"
1064 },
1065 {
1066 "include": "#variable"
1067 }
1068 ]
1069 },
1070 {
1071 "begin": "(?<!->)\\bqq\\s*\\(",
1072 "beginCaptures": {
1073 "0": {
1074 "name": "punctuation.definition.string.begin.perl"
1075 }
1076 },
1077 "end": "\\)",
1078 "endCaptures": {
1079 "0": {
1080 "name": "punctuation.definition.string.end.perl"
1081 }
1082 },
1083 "name": "string.quoted.other.qq-paren.perl",
1084 "patterns": [
1085 {
1086 "include": "#escaped_char"
1087 },
1088 {
1089 "include": "#nested_parens_interpolated"
1090 },
1091 {
1092 "include": "#variable"
1093 }
1094 ]
1095 },
1096 {
1097 "begin": "\\bqq\\s*\\{",
1098 "beginCaptures": {
1099 "0": {
1100 "name": "punctuation.definition.string.begin.perl"
1101 }
1102 },
1103 "end": "\\}",
1104 "endCaptures": {
1105 "0": {
1106 "name": "punctuation.definition.string.end.perl"
1107 }
1108 },
1109 "name": "string.quoted.other.qq-brace.perl",
1110 "patterns": [
1111 {
1112 "include": "#escaped_char"
1113 },
1114 {
1115 "include": "#nested_braces_interpolated"
1116 },
1117 {
1118 "include": "#variable"
1119 }
1120 ]
1121 },
1122 {
1123 "begin": "\\bqq\\s*\\[",
1124 "beginCaptures": {
1125 "0": {
1126 "name": "punctuation.definition.string.begin.perl"
1127 }
1128 },
1129 "end": "\\]",
1130 "endCaptures": {
1131 "0": {
1132 "name": "punctuation.definition.string.end.perl"
1133 }
1134 },
1135 "name": "string.quoted.other.qq-bracket.perl",
1136 "patterns": [
1137 {
1138 "include": "#escaped_char"
1139 },
1140 {
1141 "include": "#nested_brackets_interpolated"
1142 },
1143 {
1144 "include": "#variable"
1145 }
1146 ]
1147 },
1148 {
1149 "begin": "\\bqq\\s*\\<",
1150 "beginCaptures": {
1151 "0": {
1152 "name": "punctuation.definition.string.begin.perl"
1153 }
1154 },
1155 "end": "\\>",
1156 "endCaptures": {
1157 "0": {
1158 "name": "punctuation.definition.string.end.perl"
1159 }
1160 },
1161 "name": "string.quoted.other.qq-ltgt.perl",
1162 "patterns": [
1163 {
1164 "include": "#escaped_char"
1165 },
1166 {
1167 "include": "#nested_ltgt_interpolated"
1168 },
1169 {
1170 "include": "#variable"
1171 }
1172 ]
1173 },
1174 {
1175 "begin": "(?<!->)\\bqx\\s*\\(",
1176 "beginCaptures": {
1177 "0": {
1178 "name": "punctuation.definition.string.begin.perl"
1179 }
1180 },
1181 "end": "\\)",
1182 "endCaptures": {
1183 "0": {
1184 "name": "punctuation.definition.string.end.perl"
1185 }
1186 },
1187 "name": "string.interpolated.qx-paren.perl",
1188 "patterns": [
1189 {
1190 "include": "#escaped_char"
1191 },
1192 {
1193 "include": "#nested_parens_interpolated"
1194 },
1195 {
1196 "include": "#variable"
1197 }
1198 ]
1199 },
1200 {
1201 "begin": "\\bqx\\s*\\{",
1202 "beginCaptures": {
1203 "0": {
1204 "name": "punctuation.definition.string.begin.perl"
1205 }
1206 },
1207 "end": "\\}",
1208 "endCaptures": {
1209 "0": {
1210 "name": "punctuation.definition.string.end.perl"
1211 }
1212 },
1213 "name": "string.interpolated.qx-brace.perl",
1214 "patterns": [
1215 {
1216 "include": "#escaped_char"
1217 },
1218 {
1219 "include": "#nested_braces_interpolated"
1220 },
1221 {
1222 "include": "#variable"
1223 }
1224 ]
1225 },
1226 {
1227 "begin": "\\bqx\\s*\\[",
1228 "beginCaptures": {
1229 "0": {
1230 "name": "punctuation.definition.string.begin.perl"
1231 }
1232 },
1233 "end": "\\]",
1234 "endCaptures": {
1235 "0": {
1236 "name": "punctuation.definition.string.end.perl"
1237 }
1238 },
1239 "name": "string.interpolated.qx-bracket.perl",
1240 "patterns": [
1241 {
1242 "include": "#escaped_char"
1243 },
1244 {
1245 "include": "#nested_brackets_interpolated"
1246 },
1247 {
1248 "include": "#variable"
1249 }
1250 ]
1251 },
1252 {
1253 "begin": "\\bqx\\s*\\<",
1254 "beginCaptures": {
1255 "0": {
1256 "name": "punctuation.definition.string.begin.perl"
1257 }
1258 },
1259 "end": "\\>",
1260 "endCaptures": {
1261 "0": {
1262 "name": "punctuation.definition.string.end.perl"
1263 }
1264 },
1265 "name": "string.interpolated.qx-ltgt.perl",
1266 "patterns": [
1267 {
1268 "include": "#escaped_char"
1269 },
1270 {
1271 "include": "#nested_ltgt_interpolated"
1272 },
1273 {
1274 "include": "#variable"
1275 }
1276 ]
1277 },
1278 {
1279 "begin": "(?<!->)\\bqw?\\s*\\(",
1280 "beginCaptures": {
1281 "0": {
1282 "name": "punctuation.definition.string.begin.perl"
1283 }
1284 },
1285 "end": "\\)",
1286 "endCaptures": {
1287 "0": {
1288 "name": "punctuation.definition.string.end.perl"
1289 }
1290 },
1291 "name": "string.quoted.other.q-paren.perl",
1292 "patterns": [
1293 {
1294 "include": "#nested_parens"
1295 }
1296 ]
1297 },
1298 {
1299 "begin": "\\bqw?\\s*\\{",
1300 "beginCaptures": {
1301 "0": {
1302 "name": "punctuation.definition.string.begin.perl"
1303 }
1304 },
1305 "end": "\\}",
1306 "endCaptures": {
1307 "0": {
1308 "name": "punctuation.definition.string.end.perl"
1309 }
1310 },
1311 "name": "string.quoted.other.q-brace.perl",
1312 "patterns": [
1313 {
1314 "include": "#nested_braces"
1315 }
1316 ]
1317 },
1318 {
1319 "begin": "\\bqw?\\s*\\[",
1320 "beginCaptures": {
1321 "0": {
1322 "name": "punctuation.definition.string.begin.perl"
1323 }
1324 },
1325 "end": "\\]",
1326 "endCaptures": {
1327 "0": {
1328 "name": "punctuation.definition.string.end.perl"
1329 }
1330 },
1331 "name": "string.quoted.other.q-bracket.perl",
1332 "patterns": [
1333 {
1334 "include": "#nested_brackets"
1335 }
1336 ]
1337 },
1338 {
1339 "begin": "\\bqw?\\s*\\<",
1340 "beginCaptures": {
1341 "0": {
1342 "name": "punctuation.definition.string.begin.perl"
1343 }
1344 },
1345 "end": "\\>",
1346 "endCaptures": {
1347 "0": {
1348 "name": "punctuation.definition.string.end.perl"
1349 }
1350 },
1351 "name": "string.quoted.other.q-ltgt.perl",
1352 "patterns": [
1353 {
1354 "include": "#nested_ltgt"
1355 }
1356 ]
1357 },
1358 {
1359 "begin": "^__\\w+__",
1360 "beginCaptures": {
1361 "0": {
1362 "name": "punctuation.definition.string.begin.perl"
1363 }
1364 },
1365 "end": "$",
1366 "endCaptures": {
1367 "0": {
1368 "name": "punctuation.definition.string.end.perl"
1369 }
1370 },
1371 "name": "string.unquoted.program-block.perl"
1372 },
1373 {
1374 "begin": "\\b(format)\\s+(\\w+)\\s*=",
1375 "beginCaptures": {
1376 "1": {
1377 "name": "support.function.perl"
1378 },
1379 "2": {
1380 "name": "entity.name.function.format.perl"
1381 }
1382 },
1383 "end": "^\\.\\s*$",
1384 "name": "meta.format.perl",
1385 "patterns": [
1386 {
1387 "include": "#line_comment"
1388 },
1389 {
1390 "include": "#variable"
1391 }
1392 ]
1393 },
1394 {
1395 "captures": {
1396 "1": {
1397 "name": "support.function.perl"
1398 },
1399 "2": {
1400 "name": "entity.name.function.perl"
1401 }
1402 },
1403 "match": "\\b(x)\\s*(\\d+)\\b"
1404 },
1405 {
1406 "match": "\\b(ARGV|DATA|ENV|SIG|STDERR|STDIN|STDOUT|atan2|bind|binmode|bless|caller|chdir|chmod|chomp|chop|chown|chr|chroot|close|closedir|cmp|connect|cos|crypt|dbmclose|dbmopen|defined|delete|dump|each|endgrent|endhostent|endnetent|endprotoent|endpwent|endservent|eof|eq|eval|exec|exists|exp|fcntl|fileno|flock|fork|formline|ge|getc|getgrent|getgrgid|getgrnam|gethostbyaddr|gethostbyname|gethostent|getlogin|getnetbyaddr|getnetbyname|getnetent|getpeername|getpgrp|getppid|getpriority|getprotobyname|getprotobynumber|getprotoent|getpwent|getpwnam|getpwuid|getservbyname|getservbyport|getservent|getsockname|getsockopt|glob|gmtime|grep|gt|hex|import|index|int|ioctl|join|keys|kill|lc|lcfirst|le|length|link|listen|local|localtime|log|lstat|lt|m|map|mkdir|msgctl|msgget|msgrcv|msgsnd|ne|no|oct|open|opendir|ord|pack|pipe|pop|pos|print|printf|push|quotemeta|rand|read|readdir|readlink|recv|ref|rename|reset|reverse|rewinddir|rindex|rmdir|s|say|scalar|seek|seekdir|semctl|semget|semop|send|setgrent|sethostent|setnetent|setpgrp|setpriority|setprotoent|setpwent|setservent|setsockopt|shift|shmctl|shmget|shmread|shmwrite|shutdown|sin|sleep|socket|socketpair|sort|splice|split|sprintf|sqrt|srand|stat|study|substr|symlink|syscall|sysopen|sysread|system|syswrite|tell|telldir|tie|tied|time|times|tr|truncate|uc|ucfirst|umask|undef|unlink|unpack|unshift|untie|utime|values|vec|waitpid|wantarray|warn|write|y)\\b",
1407 "name": "support.function.perl"
1408 },
1409 {
1410 "captures": {
1411 "1": {
1412 "name": "punctuation.section.scope.begin.perl"
1413 },
1414 "2": {
1415 "name": "punctuation.section.scope.end.perl"
1416 }
1417 },
1418 "comment": "Match empty brackets for ↩ snippet",
1419 "match": "(\\{)(\\})"
1420 },
1421 {
1422 "captures": {
1423 "1": {
1424 "name": "punctuation.section.scope.begin.perl"
1425 },
1426 "2": {
1427 "name": "punctuation.section.scope.end.perl"
1428 }
1429 },
1430 "comment": "Match empty parenthesis for ↩ snippet",
1431 "match": "(\\()(\\))"
1432 }
1433 ],
1434 "repository": {
1435 "escaped_char": {
1436 "patterns": [
1437 {
1438 "match": "\\\\\\d+",
1439 "name": "constant.character.escape.perl"
1440 },
1441 {
1442 "match": "\\\\c[^\\s\\\\]",
1443 "name": "constant.character.escape.perl"
1444 },
1445 {
1446 "match": "\\\\g(?:\\{(?:\\w*|-\\d+)\\}|\\d+)",
1447 "name": "constant.character.escape.perl"
1448 },
1449 {
1450 "match": "\\\\k(?:\\{\\w*\\}|<\\w*>|'\\w*')",
1451 "name": "constant.character.escape.perl"
1452 },
1453 {
1454 "match": "\\\\N\\{[^\\}]*\\}",
1455 "name": "constant.character.escape.perl"
1456 },
1457 {
1458 "match": "\\\\o\\{\\d*\\}",
1459 "name": "constant.character.escape.perl"
1460 },
1461 {
1462 "match": "\\\\(?:p|P)(?:\\{\\w*\\}|P)",
1463 "name": "constant.character.escape.perl"
1464 },
1465 {
1466 "match": "\\\\x(?:[0-9a-zA-Z]{2}|\\{\\w*\\})?",
1467 "name": "constant.character.escape.perl"
1468 },
1469 {
1470 "match": "\\\\.",
1471 "name": "constant.character.escape.perl"
1472 }
1473 ]
1474 },
1475 "heredoc": {
1476 "patterns": [
1477 {
1478 "begin": "((((<<(~)?) *')(HTML)(')))(.*)\\n?",
1479 "beginCaptures": {
1480 "1": {
1481 "name": "string.unquoted.heredoc.raw.perl"
1482 },
1483 "2": {
1484 "name": "punctuation.definition.string.begin.perl"
1485 },
1486 "3": {
1487 "name": "punctuation.definition.delimiter.begin.perl"
1488 },
1489 "7": {
1490 "name": "punctuation.definition.delimiter.end.perl"
1491 },
1492 "8": {
1493 "patterns": [
1494 {
1495 "include": "$self"
1496 }
1497 ]
1498 }
1499 },
1500 "contentName": "string.unquoted.heredoc.raw.perl",
1501 "end": "^((?!\\5)\\s+)?((\\6))$",
1502 "endCaptures": {
1503 "2": {
1504 "name": "string.unquoted.heredoc.raw.perl"
1505 },
1506 "3": {
1507 "name": "punctuation.definition.string.end.perl"
1508 }
1509 },
1510 "name": "meta.embedded.block.html",
1511 "patterns": [
1512 {
1513 "begin": "^",
1514 "end": "\\n",
1515 "name": "text.html.basic",
1516 "patterns": [
1517 {
1518 "include": "text.html.basic"
1519 }
1520 ]
1521 }
1522 ]
1523 },
1524 {
1525 "begin": "((((<<(~)?) *')(XML)(')))(.*)\\n?",
1526 "beginCaptures": {
1527 "1": {
1528 "name": "string.unquoted.heredoc.raw.perl"
1529 },
1530 "2": {
1531 "name": "punctuation.definition.string.begin.perl"
1532 },
1533 "3": {
1534 "name": "punctuation.definition.delimiter.begin.perl"
1535 },
1536 "7": {
1537 "name": "punctuation.definition.delimiter.end.perl"
1538 },
1539 "8": {
1540 "patterns": [
1541 {
1542 "include": "$self"
1543 }
1544 ]
1545 }
1546 },
1547 "contentName": "string.unquoted.heredoc.raw.perl",
1548 "end": "^((?!\\5)\\s+)?((\\6))$",
1549 "endCaptures": {
1550 "2": {
1551 "name": "string.unquoted.heredoc.raw.perl"
1552 },
1553 "3": {
1554 "name": "punctuation.definition.string.end.perl"
1555 }
1556 },
1557 "name": "meta.embedded.block.xml",
1558 "patterns": [
1559 {
1560 "begin": "^",
1561 "end": "\\n",
1562 "name": "text.xml",
1563 "patterns": [
1564 {
1565 "include": "text.xml"
1566 }
1567 ]
1568 }
1569 ]
1570 },
1571 {
1572 "begin": "((((<<(~)?) *')(CSS)(')))(.*)\\n?",
1573 "beginCaptures": {
1574 "1": {
1575 "name": "string.unquoted.heredoc.raw.perl"
1576 },
1577 "2": {
1578 "name": "punctuation.definition.string.begin.perl"
1579 },
1580 "3": {
1581 "name": "punctuation.definition.delimiter.begin.perl"
1582 },
1583 "7": {
1584 "name": "punctuation.definition.delimiter.end.perl"
1585 },
1586 "8": {
1587 "patterns": [
1588 {
1589 "include": "$self"
1590 }
1591 ]
1592 }
1593 },
1594 "contentName": "string.unquoted.heredoc.raw.perl",
1595 "end": "^((?!\\5)\\s+)?((\\6))$",
1596 "endCaptures": {
1597 "2": {
1598 "name": "string.unquoted.heredoc.raw.perl"
1599 },
1600 "3": {
1601 "name": "punctuation.definition.string.end.perl"
1602 }
1603 },
1604 "name": "meta.embedded.block.css",
1605 "patterns": [
1606 {
1607 "begin": "^",
1608 "end": "\\n",
1609 "name": "source.css",
1610 "patterns": [
1611 {
1612 "include": "source.css"
1613 }
1614 ]
1615 }
1616 ]
1617 },
1618 {
1619 "begin": "((((<<(~)?) *')(JAVASCRIPT)(')))(.*)\\n?",
1620 "beginCaptures": {
1621 "1": {
1622 "name": "string.unquoted.heredoc.raw.perl"
1623 },
1624 "2": {
1625 "name": "punctuation.definition.string.begin.perl"
1626 },
1627 "3": {
1628 "name": "punctuation.definition.delimiter.begin.perl"
1629 },
1630 "7": {
1631 "name": "punctuation.definition.delimiter.end.perl"
1632 },
1633 "8": {
1634 "patterns": [
1635 {
1636 "include": "$self"
1637 }
1638 ]
1639 }
1640 },
1641 "contentName": "string.unquoted.heredoc.raw.perl",
1642 "end": "^((?!\\5)\\s+)?((\\6))$",
1643 "endCaptures": {
1644 "2": {
1645 "name": "string.unquoted.heredoc.raw.perl"
1646 },
1647 "3": {
1648 "name": "punctuation.definition.string.end.perl"
1649 }
1650 },
1651 "name": "meta.embedded.block.js",
1652 "patterns": [
1653 {
1654 "begin": "^",
1655 "end": "\\n",
1656 "name": "source.js",
1657 "patterns": [
1658 {
1659 "include": "source.js"
1660 }
1661 ]
1662 }
1663 ]
1664 },
1665 {
1666 "begin": "((((<<(~)?) *')(SQL)(')))(.*)\\n?",
1667 "beginCaptures": {
1668 "1": {
1669 "name": "string.unquoted.heredoc.raw.perl"
1670 },
1671 "2": {
1672 "name": "punctuation.definition.string.begin.perl"
1673 },
1674 "3": {
1675 "name": "punctuation.definition.delimiter.begin.perl"
1676 },
1677 "7": {
1678 "name": "punctuation.definition.delimiter.end.perl"
1679 },
1680 "8": {
1681 "patterns": [
1682 {
1683 "include": "$self"
1684 }
1685 ]
1686 }
1687 },
1688 "contentName": "string.unquoted.heredoc.raw.perl",
1689 "end": "^((?!\\5)\\s+)?((\\6))$",
1690 "endCaptures": {
1691 "2": {
1692 "name": "string.unquoted.heredoc.raw.perl"
1693 },
1694 "3": {
1695 "name": "punctuation.definition.string.end.perl"
1696 }
1697 },
1698 "name": "meta.embedded.block.sql",
1699 "patterns": [
1700 {
1701 "begin": "^",
1702 "end": "\\n",
1703 "name": "source.sql",
1704 "patterns": [
1705 {
1706 "include": "source.sql"
1707 }
1708 ]
1709 }
1710 ]
1711 },
1712 {
1713 "begin": "((((<<(~)?) *')(POSTSCRIPT)(')))(.*)\\n?",
1714 "beginCaptures": {
1715 "1": {
1716 "name": "string.unquoted.heredoc.raw.perl"
1717 },
1718 "2": {
1719 "name": "punctuation.definition.string.begin.perl"
1720 },
1721 "3": {
1722 "name": "punctuation.definition.delimiter.begin.perl"
1723 },
1724 "7": {
1725 "name": "punctuation.definition.delimiter.end.perl"
1726 },
1727 "8": {
1728 "patterns": [
1729 {
1730 "include": "$self"
1731 }
1732 ]
1733 }
1734 },
1735 "contentName": "string.unquoted.heredoc.raw.perl",
1736 "end": "^((?!\\5)\\s+)?((\\6))$",
1737 "endCaptures": {
1738 "2": {
1739 "name": "string.unquoted.heredoc.raw.perl"
1740 },
1741 "3": {
1742 "name": "punctuation.definition.string.end.perl"
1743 }
1744 },
1745 "name": "meta.embedded.block.postscript",
1746 "patterns": [
1747 {
1748 "begin": "^",
1749 "end": "\\n",
1750 "name": "source.postscript",
1751 "patterns": [
1752 {
1753 "include": "source.postscript"
1754 }
1755 ]
1756 }
1757 ]
1758 },
1759 {
1760 "begin": "((((<<(~)?) *')([^']*)(')))(.*)\\n?",
1761 "beginCaptures": {
1762 "1": {
1763 "name": "string.unquoted.heredoc.raw.perl"
1764 },
1765 "2": {
1766 "name": "punctuation.definition.string.begin.perl"
1767 },
1768 "3": {
1769 "name": "punctuation.definition.delimiter.begin.perl"
1770 },
1771 "7": {
1772 "name": "punctuation.definition.delimiter.end.perl"
1773 },
1774 "8": {
1775 "patterns": [
1776 {
1777 "include": "$self"
1778 }
1779 ]
1780 }
1781 },
1782 "contentName": "string.unquoted.heredoc.raw.perl",
1783 "end": "^((?!\\5)\\s+)?((\\6))$",
1784 "endCaptures": {
1785 "2": {
1786 "name": "string.unquoted.heredoc.raw.perl"
1787 },
1788 "3": {
1789 "name": "punctuation.definition.string.end.perl"
1790 }
1791 }
1792 },
1793 {
1794 "begin": "((((<<(~)?) *\\\\)((?![=\\d\\$\\( ])[^;,'\"`\\s\\)]*)()))(.*)\\n?",
1795 "beginCaptures": {
1796 "1": {
1797 "name": "string.unquoted.heredoc.raw.perl"
1798 },
1799 "2": {
1800 "name": "punctuation.definition.string.begin.perl"
1801 },
1802 "3": {
1803 "name": "punctuation.definition.delimiter.begin.perl"
1804 },
1805 "7": {
1806 "name": "punctuation.definition.delimiter.end.perl"
1807 },
1808 "8": {
1809 "patterns": [
1810 {
1811 "include": "$self"
1812 }
1813 ]
1814 }
1815 },
1816 "contentName": "string.unquoted.heredoc.raw.perl",
1817 "end": "^((?!\\5)\\s+)?((\\6))$",
1818 "endCaptures": {
1819 "2": {
1820 "name": "string.unquoted.heredoc.raw.perl"
1821 },
1822 "3": {
1823 "name": "punctuation.definition.string.end.perl"
1824 }
1825 }
1826 },
1827 {
1828 "begin": "((((<<(~)?) *\")(HTML)(\")))(.*)\\n?",
1829 "beginCaptures": {
1830 "1": {
1831 "name": "string.unquoted.heredoc.interpolated.perl"
1832 },
1833 "2": {
1834 "name": "punctuation.definition.string.begin.perl"
1835 },
1836 "3": {
1837 "name": "punctuation.definition.delimiter.begin.perl"
1838 },
1839 "7": {
1840 "name": "punctuation.definition.delimiter.end.perl"
1841 },
1842 "8": {
1843 "patterns": [
1844 {
1845 "include": "$self"
1846 }
1847 ]
1848 }
1849 },
1850 "contentName": "string.unquoted.heredoc.interpolated.perl",
1851 "end": "^((?!\\5)\\s+)?((\\6))$",
1852 "endCaptures": {
1853 "2": {
1854 "name": "string.unquoted.heredoc.interpolated.perl"
1855 },
1856 "3": {
1857 "name": "punctuation.definition.string.end.perl"
1858 }
1859 },
1860 "name": "meta.embedded.block.html",
1861 "patterns": [
1862 {
1863 "begin": "^",
1864 "end": "\\n",
1865 "name": "text.html.basic",
1866 "patterns": [
1867 {
1868 "include": "#escaped_char"
1869 },
1870 {
1871 "include": "#variable"
1872 },
1873 {
1874 "include": "text.html.basic"
1875 }
1876 ]
1877 }
1878 ]
1879 },
1880 {
1881 "begin": "((((<<(~)?) *\")(XML)(\")))(.*)\\n?",
1882 "beginCaptures": {
1883 "1": {
1884 "name": "string.unquoted.heredoc.interpolated.perl"
1885 },
1886 "2": {
1887 "name": "punctuation.definition.string.begin.perl"
1888 },
1889 "3": {
1890 "name": "punctuation.definition.delimiter.begin.perl"
1891 },
1892 "7": {
1893 "name": "punctuation.definition.delimiter.end.perl"
1894 },
1895 "8": {
1896 "patterns": [
1897 {
1898 "include": "$self"
1899 }
1900 ]
1901 }
1902 },
1903 "contentName": "string.unquoted.heredoc.interpolated.perl",
1904 "end": "^((?!\\5)\\s+)?((\\6))$",
1905 "endCaptures": {
1906 "2": {
1907 "name": "string.unquoted.heredoc.interpolated.perl"
1908 },
1909 "3": {
1910 "name": "punctuation.definition.string.end.perl"
1911 }
1912 },
1913 "name": "meta.embedded.block.xml",
1914 "patterns": [
1915 {
1916 "begin": "^",
1917 "end": "\\n",
1918 "name": "text.xml",
1919 "patterns": [
1920 {
1921 "include": "#escaped_char"
1922 },
1923 {
1924 "include": "#variable"
1925 },
1926 {
1927 "include": "text.xml"
1928 }
1929 ]
1930 }
1931 ]
1932 },
1933 {
1934 "begin": "((((<<(~)?) *\")(CSS)(\")))(.*)\\n?",
1935 "beginCaptures": {
1936 "1": {
1937 "name": "string.unquoted.heredoc.interpolated.perl"
1938 },
1939 "2": {
1940 "name": "punctuation.definition.string.begin.perl"
1941 },
1942 "3": {
1943 "name": "punctuation.definition.delimiter.begin.perl"
1944 },
1945 "7": {
1946 "name": "punctuation.definition.delimiter.end.perl"
1947 },
1948 "8": {
1949 "patterns": [
1950 {
1951 "include": "$self"
1952 }
1953 ]
1954 }
1955 },
1956 "contentName": "string.unquoted.heredoc.interpolated.perl",
1957 "end": "^((?!\\5)\\s+)?((\\6))$",
1958 "endCaptures": {
1959 "2": {
1960 "name": "string.unquoted.heredoc.interpolated.perl"
1961 },
1962 "3": {
1963 "name": "punctuation.definition.string.end.perl"
1964 }
1965 },
1966 "name": "meta.embedded.block.css",
1967 "patterns": [
1968 {
1969 "begin": "^",
1970 "end": "\\n",
1971 "name": "source.css",
1972 "patterns": [
1973 {
1974 "include": "#escaped_char"
1975 },
1976 {
1977 "include": "#variable"
1978 },
1979 {
1980 "include": "source.css"
1981 }
1982 ]
1983 }
1984 ]
1985 },
1986 {
1987 "begin": "((((<<(~)?) *\")(JAVASCRIPT)(\")))(.*)\\n?",
1988 "beginCaptures": {
1989 "1": {
1990 "name": "string.unquoted.heredoc.interpolated.perl"
1991 },
1992 "2": {
1993 "name": "punctuation.definition.string.begin.perl"
1994 },
1995 "3": {
1996 "name": "punctuation.definition.delimiter.begin.perl"
1997 },
1998 "7": {
1999 "name": "punctuation.definition.delimiter.end.perl"
2000 },
2001 "8": {
2002 "patterns": [
2003 {
2004 "include": "$self"
2005 }
2006 ]
2007 }
2008 },
2009 "contentName": "string.unquoted.heredoc.interpolated.perl",
2010 "end": "^((?!\\5)\\s+)?((\\6))$",
2011 "endCaptures": {
2012 "2": {
2013 "name": "string.unquoted.heredoc.interpolated.perl"
2014 },
2015 "3": {
2016 "name": "punctuation.definition.string.end.perl"
2017 }
2018 },
2019 "name": "meta.embedded.block.js",
2020 "patterns": [
2021 {
2022 "begin": "^",
2023 "end": "\\n",
2024 "name": "source.js",
2025 "patterns": [
2026 {
2027 "include": "#escaped_char"
2028 },
2029 {
2030 "include": "#variable"
2031 },
2032 {
2033 "include": "source.js"
2034 }
2035 ]
2036 }
2037 ]
2038 },
2039 {
2040 "begin": "((((<<(~)?) *\")(SQL)(\")))(.*)\\n?",
2041 "beginCaptures": {
2042 "1": {
2043 "name": "string.unquoted.heredoc.interpolated.perl"
2044 },
2045 "2": {
2046 "name": "punctuation.definition.string.begin.perl"
2047 },
2048 "3": {
2049 "name": "punctuation.definition.delimiter.begin.perl"
2050 },
2051 "7": {
2052 "name": "punctuation.definition.delimiter.end.perl"
2053 },
2054 "8": {
2055 "patterns": [
2056 {
2057 "include": "$self"
2058 }
2059 ]
2060 }
2061 },
2062 "contentName": "string.unquoted.heredoc.interpolated.perl",
2063 "end": "^((?!\\5)\\s+)?((\\6))$",
2064 "endCaptures": {
2065 "2": {
2066 "name": "string.unquoted.heredoc.interpolated.perl"
2067 },
2068 "3": {
2069 "name": "punctuation.definition.string.end.perl"
2070 }
2071 },
2072 "name": "meta.embedded.block.sql",
2073 "patterns": [
2074 {
2075 "begin": "^",
2076 "end": "\\n",
2077 "name": "source.sql",
2078 "patterns": [
2079 {
2080 "include": "#escaped_char"
2081 },
2082 {
2083 "include": "#variable"
2084 },
2085 {
2086 "include": "source.sql"
2087 }
2088 ]
2089 }
2090 ]
2091 },
2092 {
2093 "begin": "((((<<(~)?) *\")(POSTSCRIPT)(\")))(.*)\\n?",
2094 "beginCaptures": {
2095 "1": {
2096 "name": "string.unquoted.heredoc.interpolated.perl"
2097 },
2098 "2": {
2099 "name": "punctuation.definition.string.begin.perl"
2100 },
2101 "3": {
2102 "name": "punctuation.definition.delimiter.begin.perl"
2103 },
2104 "7": {
2105 "name": "punctuation.definition.delimiter.end.perl"
2106 },
2107 "8": {
2108 "patterns": [
2109 {
2110 "include": "$self"
2111 }
2112 ]
2113 }
2114 },
2115 "contentName": "string.unquoted.heredoc.interpolated.perl",
2116 "end": "^((?!\\5)\\s+)?((\\6))$",
2117 "endCaptures": {
2118 "2": {
2119 "name": "string.unquoted.heredoc.interpolated.perl"
2120 },
2121 "3": {
2122 "name": "punctuation.definition.string.end.perl"
2123 }
2124 },
2125 "name": "meta.embedded.block.postscript",
2126 "patterns": [
2127 {
2128 "begin": "^",
2129 "end": "\\n",
2130 "name": "source.postscript",
2131 "patterns": [
2132 {
2133 "include": "#escaped_char"
2134 },
2135 {
2136 "include": "#variable"
2137 },
2138 {
2139 "include": "source.postscript"
2140 }
2141 ]
2142 }
2143 ]
2144 },
2145 {
2146 "begin": "((((<<(~)?) *\")([^\"]*)(\")))(.*)\\n?",
2147 "beginCaptures": {
2148 "1": {
2149 "name": "string.unquoted.heredoc.interpolated.perl"
2150 },
2151 "2": {
2152 "name": "punctuation.definition.string.begin.perl"
2153 },
2154 "3": {
2155 "name": "punctuation.definition.delimiter.begin.perl"
2156 },
2157 "7": {
2158 "name": "punctuation.definition.delimiter.end.perl"
2159 },
2160 "8": {
2161 "patterns": [
2162 {
2163 "include": "$self"
2164 }
2165 ]
2166 }
2167 },
2168 "contentName": "string.unquoted.heredoc.interpolated.perl",
2169 "end": "^((?!\\5)\\s+)?((\\6))$",
2170 "endCaptures": {
2171 "2": {
2172 "name": "string.unquoted.heredoc.interpolated.perl"
2173 },
2174 "3": {
2175 "name": "punctuation.definition.string.end.perl"
2176 }
2177 },
2178 "patterns": [
2179 {
2180 "include": "#escaped_char"
2181 },
2182 {
2183 "include": "#variable"
2184 }
2185 ]
2186 },
2187 {
2188 "begin": "((((<<(~)?) *)(HTML)()))(.*)\\n?",
2189 "beginCaptures": {
2190 "1": {
2191 "name": "string.unquoted.heredoc.interpolated.perl"
2192 },
2193 "2": {
2194 "name": "punctuation.definition.string.begin.perl"
2195 },
2196 "3": {
2197 "name": "punctuation.definition.delimiter.begin.perl"
2198 },
2199 "7": {
2200 "name": "punctuation.definition.delimiter.end.perl"
2201 },
2202 "8": {
2203 "patterns": [
2204 {
2205 "include": "$self"
2206 }
2207 ]
2208 }
2209 },
2210 "contentName": "string.unquoted.heredoc.interpolated.perl",
2211 "end": "^((?!\\5)\\s+)?((\\6))$",
2212 "endCaptures": {
2213 "2": {
2214 "name": "string.unquoted.heredoc.interpolated.perl"
2215 },
2216 "3": {
2217 "name": "punctuation.definition.string.end.perl"
2218 }
2219 },
2220 "name": "meta.embedded.block.html",
2221 "patterns": [
2222 {
2223 "begin": "^",
2224 "end": "\\n",
2225 "name": "text.html.basic",
2226 "patterns": [
2227 {
2228 "include": "#escaped_char"
2229 },
2230 {
2231 "include": "#variable"
2232 },
2233 {
2234 "include": "text.html.basic"
2235 }
2236 ]
2237 }
2238 ]
2239 },
2240 {
2241 "begin": "((((<<(~)?) *)(XML)()))(.*)\\n?",
2242 "beginCaptures": {
2243 "1": {
2244 "name": "string.unquoted.heredoc.interpolated.perl"
2245 },
2246 "2": {
2247 "name": "punctuation.definition.string.begin.perl"
2248 },
2249 "3": {
2250 "name": "punctuation.definition.delimiter.begin.perl"
2251 },
2252 "7": {
2253 "name": "punctuation.definition.delimiter.end.perl"
2254 },
2255 "8": {
2256 "patterns": [
2257 {
2258 "include": "$self"
2259 }
2260 ]
2261 }
2262 },
2263 "contentName": "string.unquoted.heredoc.interpolated.perl",
2264 "end": "^((?!\\5)\\s+)?((\\6))$",
2265 "endCaptures": {
2266 "2": {
2267 "name": "string.unquoted.heredoc.interpolated.perl"
2268 },
2269 "3": {
2270 "name": "punctuation.definition.string.end.perl"
2271 }
2272 },
2273 "name": "meta.embedded.block.xml",
2274 "patterns": [
2275 {
2276 "begin": "^",
2277 "end": "\\n",
2278 "name": "text.xml",
2279 "patterns": [
2280 {
2281 "include": "#escaped_char"
2282 },
2283 {
2284 "include": "#variable"
2285 },
2286 {
2287 "include": "text.xml"
2288 }
2289 ]
2290 }
2291 ]
2292 },
2293 {
2294 "begin": "((((<<(~)?) *)(CSS)()))(.*)\\n?",
2295 "beginCaptures": {
2296 "1": {
2297 "name": "string.unquoted.heredoc.interpolated.perl"
2298 },
2299 "2": {
2300 "name": "punctuation.definition.string.begin.perl"
2301 },
2302 "3": {
2303 "name": "punctuation.definition.delimiter.begin.perl"
2304 },
2305 "7": {
2306 "name": "punctuation.definition.delimiter.end.perl"
2307 },
2308 "8": {
2309 "patterns": [
2310 {
2311 "include": "$self"
2312 }
2313 ]
2314 }
2315 },
2316 "contentName": "string.unquoted.heredoc.interpolated.perl",
2317 "end": "^((?!\\5)\\s+)?((\\6))$",
2318 "endCaptures": {
2319 "2": {
2320 "name": "string.unquoted.heredoc.interpolated.perl"
2321 },
2322 "3": {
2323 "name": "punctuation.definition.string.end.perl"
2324 }
2325 },
2326 "name": "meta.embedded.block.css",
2327 "patterns": [
2328 {
2329 "begin": "^",
2330 "end": "\\n",
2331 "name": "source.css",
2332 "patterns": [
2333 {
2334 "include": "#escaped_char"
2335 },
2336 {
2337 "include": "#variable"
2338 },
2339 {
2340 "include": "source.css"
2341 }
2342 ]
2343 }
2344 ]
2345 },
2346 {
2347 "begin": "((((<<(~)?) *)(JAVASCRIPT)()))(.*)\\n?",
2348 "beginCaptures": {
2349 "1": {
2350 "name": "string.unquoted.heredoc.interpolated.perl"
2351 },
2352 "2": {
2353 "name": "punctuation.definition.string.begin.perl"
2354 },
2355 "3": {
2356 "name": "punctuation.definition.delimiter.begin.perl"
2357 },
2358 "7": {
2359 "name": "punctuation.definition.delimiter.end.perl"
2360 },
2361 "8": {
2362 "patterns": [
2363 {
2364 "include": "$self"
2365 }
2366 ]
2367 }
2368 },
2369 "contentName": "string.unquoted.heredoc.interpolated.perl",
2370 "end": "^((?!\\5)\\s+)?((\\6))$",
2371 "endCaptures": {
2372 "2": {
2373 "name": "string.unquoted.heredoc.interpolated.perl"
2374 },
2375 "3": {
2376 "name": "punctuation.definition.string.end.perl"
2377 }
2378 },
2379 "name": "meta.embedded.block.js",
2380 "patterns": [
2381 {
2382 "begin": "^",
2383 "end": "\\n",
2384 "name": "source.js",
2385 "patterns": [
2386 {
2387 "include": "#escaped_char"
2388 },
2389 {
2390 "include": "#variable"
2391 },
2392 {
2393 "include": "source.js"
2394 }
2395 ]
2396 }
2397 ]
2398 },
2399 {
2400 "begin": "((((<<(~)?) *)(SQL)()))(.*)\\n?",
2401 "beginCaptures": {
2402 "1": {
2403 "name": "string.unquoted.heredoc.interpolated.perl"
2404 },
2405 "2": {
2406 "name": "punctuation.definition.string.begin.perl"
2407 },
2408 "3": {
2409 "name": "punctuation.definition.delimiter.begin.perl"
2410 },
2411 "7": {
2412 "name": "punctuation.definition.delimiter.end.perl"
2413 },
2414 "8": {
2415 "patterns": [
2416 {
2417 "include": "$self"
2418 }
2419 ]
2420 }
2421 },
2422 "contentName": "string.unquoted.heredoc.interpolated.perl",
2423 "end": "^((?!\\5)\\s+)?((\\6))$",
2424 "endCaptures": {
2425 "2": {
2426 "name": "string.unquoted.heredoc.interpolated.perl"
2427 },
2428 "3": {
2429 "name": "punctuation.definition.string.end.perl"
2430 }
2431 },
2432 "name": "meta.embedded.block.sql",
2433 "patterns": [
2434 {
2435 "begin": "^",
2436 "end": "\\n",
2437 "name": "source.sql",
2438 "patterns": [
2439 {
2440 "include": "#escaped_char"
2441 },
2442 {
2443 "include": "#variable"
2444 },
2445 {
2446 "include": "source.sql"
2447 }
2448 ]
2449 }
2450 ]
2451 },
2452 {
2453 "begin": "((((<<(~)?) *)(POSTSCRIPT)()))(.*)\\n?",
2454 "beginCaptures": {
2455 "1": {
2456 "name": "string.unquoted.heredoc.interpolated.perl"
2457 },
2458 "2": {
2459 "name": "punctuation.definition.string.begin.perl"
2460 },
2461 "3": {
2462 "name": "punctuation.definition.delimiter.begin.perl"
2463 },
2464 "7": {
2465 "name": "punctuation.definition.delimiter.end.perl"
2466 },
2467 "8": {
2468 "patterns": [
2469 {
2470 "include": "$self"
2471 }
2472 ]
2473 }
2474 },
2475 "contentName": "string.unquoted.heredoc.interpolated.perl",
2476 "end": "^((?!\\5)\\s+)?((\\6))$",
2477 "endCaptures": {
2478 "2": {
2479 "name": "string.unquoted.heredoc.interpolated.perl"
2480 },
2481 "3": {
2482 "name": "punctuation.definition.string.end.perl"
2483 }
2484 },
2485 "name": "meta.embedded.block.postscript",
2486 "patterns": [
2487 {
2488 "begin": "^",
2489 "end": "\\n",
2490 "name": "source.postscript",
2491 "patterns": [
2492 {
2493 "include": "#escaped_char"
2494 },
2495 {
2496 "include": "#variable"
2497 },
2498 {
2499 "include": "source.postscript"
2500 }
2501 ]
2502 }
2503 ]
2504 },
2505 {
2506 "begin": "((((<<(~)?) *)((?![=\\d\\$\\( ])[^;,'\"`\\s\\)]*)()))(.*)\\n?",
2507 "beginCaptures": {
2508 "1": {
2509 "name": "string.unquoted.heredoc.interpolated.perl"
2510 },
2511 "2": {
2512 "name": "punctuation.definition.string.begin.perl"
2513 },
2514 "3": {
2515 "name": "punctuation.definition.delimiter.begin.perl"
2516 },
2517 "7": {
2518 "name": "punctuation.definition.delimiter.end.perl"
2519 },
2520 "8": {
2521 "patterns": [
2522 {
2523 "include": "$self"
2524 }
2525 ]
2526 }
2527 },
2528 "contentName": "string.unquoted.heredoc.interpolated.perl",
2529 "end": "^((?!\\5)\\s+)?((\\6))$",
2530 "endCaptures": {
2531 "2": {
2532 "name": "string.unquoted.heredoc.interpolated.perl"
2533 },
2534 "3": {
2535 "name": "punctuation.definition.string.end.perl"
2536 }
2537 },
2538 "patterns": [
2539 {
2540 "include": "#escaped_char"
2541 },
2542 {
2543 "include": "#variable"
2544 }
2545 ]
2546 },
2547 {
2548 "begin": "((((<<(~)?) *`)([^`]*)(`)))(.*)\\n?",
2549 "beginCaptures": {
2550 "1": {
2551 "name": "string.unquoted.heredoc.interpolated.perl"
2552 },
2553 "2": {
2554 "name": "punctuation.definition.string.begin.perl"
2555 },
2556 "3": {
2557 "name": "punctuation.definition.delimiter.begin.perl"
2558 },
2559 "7": {
2560 "name": "punctuation.definition.delimiter.end.perl"
2561 },
2562 "8": {
2563 "patterns": [
2564 {
2565 "include": "$self"
2566 }
2567 ]
2568 }
2569 },
2570 "contentName": "string.unquoted.heredoc.shell.perl",
2571 "end": "^((?!\\5)\\s+)?((\\6))$",
2572 "endCaptures": {
2573 "2": {
2574 "name": "string.unquoted.heredoc.interpolated.perl"
2575 },
2576 "3": {
2577 "name": "punctuation.definition.string.end.perl"
2578 }
2579 },
2580 "patterns": [
2581 {
2582 "include": "#escaped_char"
2583 },
2584 {
2585 "include": "#variable"
2586 }
2587 ]
2588 }
2589 ]
2590 },
2591 "line_comment": {
2592 "patterns": [
2593 {
2594 "begin": "(^[ \\t]+)?(?=#)",
2595 "beginCaptures": {
2596 "1": {
2597 "name": "punctuation.whitespace.comment.leading.perl"
2598 }
2599 },
2600 "end": "(?!\\G)",
2601 "patterns": [
2602 {
2603 "begin": "#",
2604 "beginCaptures": {
2605 "0": {
2606 "name": "punctuation.definition.comment.perl"
2607 }
2608 },
2609 "end": "\\n",
2610 "name": "comment.line.number-sign.perl"
2611 }
2612 ]
2613 }
2614 ]
2615 },
2616 "nested_braces": {
2617 "begin": "\\{",
2618 "captures": {
2619 "1": {
2620 "name": "punctuation.section.scope.perl"
2621 }
2622 },
2623 "end": "\\}",
2624 "patterns": [
2625 {
2626 "include": "#escaped_char"
2627 },
2628 {
2629 "include": "#nested_braces"
2630 }
2631 ]
2632 },
2633 "nested_braces_interpolated": {
2634 "begin": "\\{",
2635 "captures": {
2636 "1": {
2637 "name": "punctuation.section.scope.perl"
2638 }
2639 },
2640 "end": "\\}",
2641 "patterns": [
2642 {
2643 "include": "#escaped_char"
2644 },
2645 {
2646 "include": "#variable"
2647 },
2648 {
2649 "include": "#nested_braces_interpolated"
2650 }
2651 ]
2652 },
2653 "nested_brackets": {
2654 "begin": "\\[",
2655 "captures": {
2656 "1": {
2657 "name": "punctuation.section.scope.perl"
2658 }
2659 },
2660 "end": "\\]",
2661 "patterns": [
2662 {
2663 "include": "#escaped_char"
2664 },
2665 {
2666 "include": "#nested_brackets"
2667 }
2668 ]
2669 },
2670 "nested_brackets_interpolated": {
2671 "begin": "\\[",
2672 "captures": {
2673 "1": {
2674 "name": "punctuation.section.scope.perl"
2675 }
2676 },
2677 "end": "\\]",
2678 "patterns": [
2679 {
2680 "include": "#escaped_char"
2681 },
2682 {
2683 "include": "#variable"
2684 },
2685 {
2686 "include": "#nested_brackets_interpolated"
2687 }
2688 ]
2689 },
2690 "nested_ltgt": {
2691 "begin": "<",
2692 "captures": {
2693 "1": {
2694 "name": "punctuation.section.scope.perl"
2695 }
2696 },
2697 "end": ">",
2698 "patterns": [
2699 {
2700 "include": "#nested_ltgt"
2701 }
2702 ]
2703 },
2704 "nested_ltgt_interpolated": {
2705 "begin": "<",
2706 "captures": {
2707 "1": {
2708 "name": "punctuation.section.scope.perl"
2709 }
2710 },
2711 "end": ">",
2712 "patterns": [
2713 {
2714 "include": "#variable"
2715 },
2716 {
2717 "include": "#nested_ltgt_interpolated"
2718 }
2719 ]
2720 },
2721 "nested_parens": {
2722 "begin": "\\(",
2723 "captures": {
2724 "1": {
2725 "name": "punctuation.section.scope.perl"
2726 }
2727 },
2728 "end": "\\)",
2729 "patterns": [
2730 {
2731 "include": "#escaped_char"
2732 },
2733 {
2734 "include": "#nested_parens"
2735 }
2736 ]
2737 },
2738 "nested_parens_interpolated": {
2739 "begin": "\\(",
2740 "captures": {
2741 "1": {
2742 "name": "punctuation.section.scope.perl"
2743 }
2744 },
2745 "end": "\\)",
2746 "patterns": [
2747 {
2748 "comment": "This is to prevent thinks like qr/foo$/ to treat $/ as a variable",
2749 "match": "\\$(?=[^\\s\\w'\\{\\[\\(\\<])",
2750 "name": "keyword.control.anchor.perl"
2751 },
2752 {
2753 "include": "#escaped_char"
2754 },
2755 {
2756 "include": "#variable"
2757 },
2758 {
2759 "include": "#nested_parens_interpolated"
2760 }
2761 ]
2762 },
2763 "pod": {
2764 "patterns": [
2765 {
2766 "match": "^=(pod|back|cut)\\b",
2767 "name": "storage.type.class.pod.perl"
2768 },
2769 {
2770 "begin": "^(=begin)\\s+(html)\\s*$",
2771 "beginCaptures": {
2772 "1": {
2773 "name": "storage.type.class.pod.perl"
2774 },
2775 "2": {
2776 "name": "variable.other.pod.perl"
2777 }
2778 },
2779 "contentName": "text.embedded.html.basic",
2780 "end": "^(=end)\\s+(html)|^(?==cut)",
2781 "endCaptures": {
2782 "1": {
2783 "name": "storage.type.class.pod.perl"
2784 },
2785 "2": {
2786 "name": "variable.other.pod.perl"
2787 }
2788 },
2789 "name": "meta.embedded.pod.perl",
2790 "patterns": [
2791 {
2792 "include": "text.html.basic"
2793 }
2794 ]
2795 },
2796 {
2797 "captures": {
2798 "1": {
2799 "name": "storage.type.class.pod.perl"
2800 },
2801 "2": {
2802 "name": "variable.other.pod.perl",
2803 "patterns": [
2804 {
2805 "include": "#pod-formatting"
2806 }
2807 ]
2808 }
2809 },
2810 "match": "^(=(?:head[1-4]|item|over|encoding|begin|end|for))\\b\\s*(.*)"
2811 },
2812 {
2813 "include": "#pod-formatting"
2814 }
2815 ]
2816 },
2817 "pod-formatting": {
2818 "patterns": [
2819 {
2820 "captures": {
2821 "1": {
2822 "name": "markup.italic.pod.perl"
2823 },
2824 "2": {
2825 "name": "markup.italic.pod.perl"
2826 }
2827 },
2828 "match": "I(?:<([^<>]+)>|<+(\\s+(?:(?<!\\s)>|[^>])+\\s+)>+)",
2829 "name": "entity.name.type.instance.pod.perl"
2830 },
2831 {
2832 "captures": {
2833 "1": {
2834 "name": "markup.bold.pod.perl"
2835 },
2836 "2": {
2837 "name": "markup.bold.pod.perl"
2838 }
2839 },
2840 "match": "B(?:<([^<>]+)>|<+(\\s+(?:(?<!\\s)>|[^>])+\\s+)>+)",
2841 "name": "entity.name.type.instance.pod.perl"
2842 },
2843 {
2844 "captures": {
2845 "1": {
2846 "name": "markup.raw.pod.perl"
2847 },
2848 "2": {
2849 "name": "markup.raw.pod.perl"
2850 }
2851 },
2852 "match": "C(?:<([^<>]+)>|<+(\\\\s+(?:(?<!\\\\s)>|[^>])+\\\\s+)>+)",
2853 "name": "entity.name.type.instance.pod.perl"
2854 },
2855 {
2856 "captures": {
2857 "1": {
2858 "name": "markup.underline.link.hyperlink.pod.perl"
2859 }
2860 },
2861 "match": "L<([^>]+)>",
2862 "name": "entity.name.type.instance.pod.perl"
2863 },
2864 {
2865 "match": "[EFSXZ]<[^>]*>",
2866 "name": "entity.name.type.instance.pod.perl"
2867 }
2868 ]
2869 },
2870 "variable": {
2871 "patterns": [
2872 {
2873 "captures": {
2874 "1": {
2875 "name": "punctuation.definition.variable.perl"
2876 }
2877 },
2878 "match": "(\\$)&(?![A-Za-z0-9_])",
2879 "name": "variable.other.regexp.match.perl"
2880 },
2881 {
2882 "captures": {
2883 "1": {
2884 "name": "punctuation.definition.variable.perl"
2885 }
2886 },
2887 "match": "(\\$)`(?![A-Za-z0-9_])",
2888 "name": "variable.other.regexp.pre-match.perl"
2889 },
2890 {
2891 "captures": {
2892 "1": {
2893 "name": "punctuation.definition.variable.perl"
2894 }
2895 },
2896 "match": "(\\$)'(?![A-Za-z0-9_])",
2897 "name": "variable.other.regexp.post-match.perl"
2898 },
2899 {
2900 "captures": {
2901 "1": {
2902 "name": "punctuation.definition.variable.perl"
2903 }
2904 },
2905 "match": "(\\$)\\+(?![A-Za-z0-9_])",
2906 "name": "variable.other.regexp.last-paren-match.perl"
2907 },
2908 {
2909 "captures": {
2910 "1": {
2911 "name": "punctuation.definition.variable.perl"
2912 }
2913 },
2914 "match": "(\\$)\"(?![A-Za-z0-9_])",
2915 "name": "variable.other.readwrite.list-separator.perl"
2916 },
2917 {
2918 "captures": {
2919 "1": {
2920 "name": "punctuation.definition.variable.perl"
2921 }
2922 },
2923 "match": "(\\$)0(?![A-Za-z0-9_])",
2924 "name": "variable.other.predefined.program-name.perl"
2925 },
2926 {
2927 "captures": {
2928 "1": {
2929 "name": "punctuation.definition.variable.perl"
2930 }
2931 },
2932 "match": "(\\$)[_ab\\*\\.\\/\\|,\\\\;#%=\\-~^:?!\\$<>\\(\\)\\[\\]@](?![A-Za-z0-9_])",
2933 "name": "variable.other.predefined.perl"
2934 },
2935 {
2936 "captures": {
2937 "1": {
2938 "name": "punctuation.definition.variable.perl"
2939 }
2940 },
2941 "match": "(\\$)[0-9]+(?![A-Za-z0-9_])",
2942 "name": "variable.other.subpattern.perl"
2943 },
2944 {
2945 "captures": {
2946 "1": {
2947 "name": "punctuation.definition.variable.perl"
2948 }
2949 },
2950 "match": "([\\$\\@\\%](#)?)([a-zA-Zx7f-xff\\$]|::)([a-zA-Z0-9_x7f-xff\\$]|::)*\\b",
2951 "name": "variable.other.readwrite.global.perl"
2952 },
2953 {
2954 "captures": {
2955 "1": {
2956 "name": "punctuation.definition.variable.perl"
2957 },
2958 "2": {
2959 "name": "punctuation.definition.variable.perl"
2960 }
2961 },
2962 "match": "(\\$\\{)(?:[a-zA-Zx7f-xff\\$]|::)(?:[a-zA-Z0-9_x7f-xff\\$]|::)*(\\})",
2963 "name": "variable.other.readwrite.global.perl"
2964 },
2965 {
2966 "captures": {
2967 "1": {
2968 "name": "punctuation.definition.variable.perl"
2969 }
2970 },
2971 "match": "([\\$\\@\\%](#)?)[0-9_]\\b",
2972 "name": "variable.other.readwrite.global.special.perl"
2973 }
2974 ]
2975 }
2976 }
2977 }
2978