---input---
#! /usr/bin/env perl

use strict;
use warnings;

# common delimiters
print "a: ";
my $a = "foo";
print $a, " - ";
$a =~ s/foo/bar/;
print $a, "\n";

print "b: ";
my $b = "foo";
print $b, " - ";
$b =~ s!foo!bar!;
print $b, "\n";

print "c: ";
my $c = "foo";
print $c, " - ";
$c =~ s@foo@bar@;
print $c, "\n";

print "d: ";
my $d = "foo";
print $d, " - ";
$d =~ s\foo\bar\;
print $d, "\n";

print "\n";

# balanced delimiters
print "e: ";
my $e = "foo";
print $e, " - ";
$e =~ s{foo}{bar};
print $e, "\n";

print "f: ";
my $f = "foo";
print $f, " - ";
$f =~ s(foo)(bar);
print $f, "\n";

print "g: ";
my $g = "foo";
print $g, " - ";
$g =~ s<foo><bar>;
print $g, "\n";

print "h: ";
my $h = "foo";
print $h, " - ";
$h =~ s[foo][bar];
print $h, "\n";

print "\n";

# balanced delimiters with whitespace
print "i: ";
my $i = "foo";
print $i, " - ";
$i =~ s{foo} {bar};
print $i, "\n";

print "j: ";
my $j = "foo";
print $j, " - ";
$j =~ s<foo>		<bar>;
print $j, "\n";

print "k: ";
my $k = "foo";
print $k, " - ";
$k =~
	s(foo)

	(bar);
print $k, "\n";

print "\n";

# mixed delimiters
print "l: ";
my $l = "foo";
print $l, " - ";
$l =~ s{foo} <bar>;
print $l, "\n";

print "m: ";
my $m = "foo";
print $m, " - ";
$m =~ s(foo) !bar!;
print $m, "\n";

print "n: ";
my $n = "foo";
print $n, " - ";
$n =~ s[foo] $bar$;
print $n, "\n";

print "\n";

# /x modifier
print "o: ";
my $o = "foo";
print $o, " - ";
$o =~ s{
				foo
			 } {bar}x;
print $o, "\n";

print "p: ";
my $p = "foo";
print $p, " - ";
$p =~ s%
  foo
  %bar%x;
print $p, "\n";

---tokens---
'#! /usr/bin/env perl' Comment.Hashbang
'\n\n'        Text

'use'         Keyword
' '           Text
'strict'      Name.Namespace
';'           Punctuation
'\n'          Text

'use'         Keyword
' '           Text
'warnings'    Name.Namespace
';'           Punctuation
'\n\n'        Text

'# common delimiters' Comment.Single
'\n'          Text

'print'       Keyword
' '           Text
'"a: "'       Literal.String
';'           Punctuation
'\n'          Text

'my'          Keyword
' '           Text
'$'           Name.Variable
'a'           Name.Variable
' '           Text
'='           Operator
' '           Text
'"foo"'       Literal.String
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'a'           Name.Variable
','           Punctuation
' '           Text
'" - "'       Literal.String
';'           Punctuation
'\n'          Text

'$'           Name.Variable
'a'           Name.Variable
' '           Text
'=~'          Operator
' '           Text
's/foo/bar/'  Literal.String.Regex
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'a'           Name.Variable
','           Punctuation
' '           Text
'"\\n"'       Literal.String
';'           Punctuation
'\n\n'        Text

'print'       Keyword
' '           Text
'"b: "'       Literal.String
';'           Punctuation
'\n'          Text

'my'          Keyword
' '           Text
'$'           Name.Variable
'b'           Name.Variable
' '           Text
'='           Operator
' '           Text
'"foo"'       Literal.String
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'b'           Name.Variable
','           Punctuation
' '           Text
'" - "'       Literal.String
';'           Punctuation
'\n'          Text

'$'           Name.Variable
'b'           Name.Variable
' '           Text
'=~'          Operator
' '           Text
's!foo!bar!'  Literal.String.Regex
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'b'           Name.Variable
','           Punctuation
' '           Text
'"\\n"'       Literal.String
';'           Punctuation
'\n\n'        Text

'print'       Keyword
' '           Text
'"c: "'       Literal.String
';'           Punctuation
'\n'          Text

'my'          Keyword
' '           Text
'$'           Name.Variable
'c'           Name.Variable
' '           Text
'='           Operator
' '           Text
'"foo"'       Literal.String
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'c'           Name.Variable
','           Punctuation
' '           Text
'" - "'       Literal.String
';'           Punctuation
'\n'          Text

'$'           Name.Variable
'c'           Name.Variable
' '           Text
'=~'          Operator
' '           Text
's@foo@bar@'  Literal.String.Regex
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'c'           Name.Variable
','           Punctuation
' '           Text
'"\\n"'       Literal.String
';'           Punctuation
'\n\n'        Text

'print'       Keyword
' '           Text
'"d: "'       Literal.String
';'           Punctuation
'\n'          Text

'my'          Keyword
' '           Text
'$'           Name.Variable
'd'           Name.Variable
' '           Text
'='           Operator
' '           Text
'"foo"'       Literal.String
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'd'           Name.Variable
','           Punctuation
' '           Text
'" - "'       Literal.String
';'           Punctuation
'\n'          Text

'$'           Name.Variable
'd'           Name.Variable
' '           Text
'=~'          Operator
' '           Text
's\\foo\\bar\\' Literal.String.Regex
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'd'           Name.Variable
','           Punctuation
' '           Text
'"\\n"'       Literal.String
';'           Punctuation
'\n\n'        Text

'print'       Keyword
' '           Text
'"\\n"'       Literal.String
';'           Punctuation
'\n\n'        Text

'# balanced delimiters' Comment.Single
'\n'          Text

'print'       Keyword
' '           Text
'"e: "'       Literal.String
';'           Punctuation
'\n'          Text

'my'          Keyword
' '           Text
'$'           Name.Variable
'e'           Name.Variable
' '           Text
'='           Operator
' '           Text
'"foo"'       Literal.String
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'e'           Name.Variable
','           Punctuation
' '           Text
'" - "'       Literal.String
';'           Punctuation
'\n'          Text

'$'           Name.Variable
'e'           Name.Variable
' '           Text
'=~'          Operator
' '           Text
's{foo}'      Literal.String.Regex
'{bar}'       Literal.String.Regex
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'e'           Name.Variable
','           Punctuation
' '           Text
'"\\n"'       Literal.String
';'           Punctuation
'\n\n'        Text

'print'       Keyword
' '           Text
'"f: "'       Literal.String
';'           Punctuation
'\n'          Text

'my'          Keyword
' '           Text
'$'           Name.Variable
'f'           Name.Variable
' '           Text
'='           Operator
' '           Text
'"foo"'       Literal.String
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'f'           Name.Variable
','           Punctuation
' '           Text
'" - "'       Literal.String
';'           Punctuation
'\n'          Text

'$'           Name.Variable
'f'           Name.Variable
' '           Text
'=~'          Operator
' '           Text
's(foo)'      Literal.String.Regex
'(bar)'       Literal.String.Regex
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'f'           Name.Variable
','           Punctuation
' '           Text
'"\\n"'       Literal.String
';'           Punctuation
'\n\n'        Text

'print'       Keyword
' '           Text
'"g: "'       Literal.String
';'           Punctuation
'\n'          Text

'my'          Keyword
' '           Text
'$'           Name.Variable
'g'           Name.Variable
' '           Text
'='           Operator
' '           Text
'"foo"'       Literal.String
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'g'           Name.Variable
','           Punctuation
' '           Text
'" - "'       Literal.String
';'           Punctuation
'\n'          Text

'$'           Name.Variable
'g'           Name.Variable
' '           Text
'=~'          Operator
' '           Text
's<foo>'      Literal.String.Regex
'<bar>'       Literal.String.Regex
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'g'           Name.Variable
','           Punctuation
' '           Text
'"\\n"'       Literal.String
';'           Punctuation
'\n\n'        Text

'print'       Keyword
' '           Text
'"h: "'       Literal.String
';'           Punctuation
'\n'          Text

'my'          Keyword
' '           Text
'$'           Name.Variable
'h'           Name.Variable
' '           Text
'='           Operator
' '           Text
'"foo"'       Literal.String
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'h'           Name.Variable
','           Punctuation
' '           Text
'" - "'       Literal.String
';'           Punctuation
'\n'          Text

'$'           Name.Variable
'h'           Name.Variable
' '           Text
'=~'          Operator
' '           Text
's[foo]'      Literal.String.Regex
'[bar]'       Literal.String.Regex
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'h'           Name.Variable
','           Punctuation
' '           Text
'"\\n"'       Literal.String
';'           Punctuation
'\n\n'        Text

'print'       Keyword
' '           Text
'"\\n"'       Literal.String
';'           Punctuation
'\n\n'        Text

'# balanced delimiters with whitespace' Comment.Single
'\n'          Text

'print'       Keyword
' '           Text
'"i: "'       Literal.String
';'           Punctuation
'\n'          Text

'my'          Keyword
' '           Text
'$'           Name.Variable
'i'           Name.Variable
' '           Text
'='           Operator
' '           Text
'"foo"'       Literal.String
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'i'           Name.Variable
','           Punctuation
' '           Text
'" - "'       Literal.String
';'           Punctuation
'\n'          Text

'$'           Name.Variable
'i'           Name.Variable
' '           Text
'=~'          Operator
' '           Text
's{foo} '     Literal.String.Regex
'{bar}'       Literal.String.Regex
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'i'           Name.Variable
','           Punctuation
' '           Text
'"\\n"'       Literal.String
';'           Punctuation
'\n\n'        Text

'print'       Keyword
' '           Text
'"j: "'       Literal.String
';'           Punctuation
'\n'          Text

'my'          Keyword
' '           Text
'$'           Name.Variable
'j'           Name.Variable
' '           Text
'='           Operator
' '           Text
'"foo"'       Literal.String
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'j'           Name.Variable
','           Punctuation
' '           Text
'" - "'       Literal.String
';'           Punctuation
'\n'          Text

'$'           Name.Variable
'j'           Name.Variable
' '           Text
'=~'          Operator
' '           Text
's<foo>\t\t'  Literal.String.Regex
'<bar>'       Literal.String.Regex
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'j'           Name.Variable
','           Punctuation
' '           Text
'"\\n"'       Literal.String
';'           Punctuation
'\n\n'        Text

'print'       Keyword
' '           Text
'"k: "'       Literal.String
';'           Punctuation
'\n'          Text

'my'          Keyword
' '           Text
'$'           Name.Variable
'k'           Name.Variable
' '           Text
'='           Operator
' '           Text
'"foo"'       Literal.String
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'k'           Name.Variable
','           Punctuation
' '           Text
'" - "'       Literal.String
';'           Punctuation
'\n'          Text

'$'           Name.Variable
'k'           Name.Variable
' '           Text
'=~'          Operator
'\n\t'        Text
's(foo)\n\n\t' Literal.String.Regex
'(bar)'       Literal.String.Regex
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'k'           Name.Variable
','           Punctuation
' '           Text
'"\\n"'       Literal.String
';'           Punctuation
'\n\n'        Text

'print'       Keyword
' '           Text
'"\\n"'       Literal.String
';'           Punctuation
'\n\n'        Text

'# mixed delimiters' Comment.Single
'\n'          Text

'print'       Keyword
' '           Text
'"l: "'       Literal.String
';'           Punctuation
'\n'          Text

'my'          Keyword
' '           Text
'$'           Name.Variable
'l'           Name.Variable
' '           Text
'='           Operator
' '           Text
'"foo"'       Literal.String
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'l'           Name.Variable
','           Punctuation
' '           Text
'" - "'       Literal.String
';'           Punctuation
'\n'          Text

'$'           Name.Variable
'l'           Name.Variable
' '           Text
'=~'          Operator
' '           Text
's{foo} '     Literal.String.Regex
'<bar>'       Literal.String.Regex
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'l'           Name.Variable
','           Punctuation
' '           Text
'"\\n"'       Literal.String
';'           Punctuation
'\n\n'        Text

'print'       Keyword
' '           Text
'"m: "'       Literal.String
';'           Punctuation
'\n'          Text

'my'          Keyword
' '           Text
'$'           Name.Variable
'm'           Name.Variable
' '           Text
'='           Operator
' '           Text
'"foo"'       Literal.String
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'm'           Name.Variable
','           Punctuation
' '           Text
'" - "'       Literal.String
';'           Punctuation
'\n'          Text

'$'           Name.Variable
'm'           Name.Variable
' '           Text
'=~'          Operator
' '           Text
's(foo) '     Literal.String.Regex
'!bar!'       Literal.String.Regex
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'm'           Name.Variable
','           Punctuation
' '           Text
'"\\n"'       Literal.String
';'           Punctuation
'\n\n'        Text

'print'       Keyword
' '           Text
'"n: "'       Literal.String
';'           Punctuation
'\n'          Text

'my'          Keyword
' '           Text
'$'           Name.Variable
'n'           Name.Variable
' '           Text
'='           Operator
' '           Text
'"foo"'       Literal.String
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'n'           Name.Variable
','           Punctuation
' '           Text
'" - "'       Literal.String
';'           Punctuation
'\n'          Text

'$'           Name.Variable
'n'           Name.Variable
' '           Text
'=~'          Operator
' '           Text
's[foo] '     Literal.String.Regex
'$bar$'       Literal.String.Regex
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'n'           Name.Variable
','           Punctuation
' '           Text
'"\\n"'       Literal.String
';'           Punctuation
'\n\n'        Text

'print'       Keyword
' '           Text
'"\\n"'       Literal.String
';'           Punctuation
'\n\n'        Text

'# /x modifier' Comment.Single
'\n'          Text

'print'       Keyword
' '           Text
'"o: "'       Literal.String
';'           Punctuation
'\n'          Text

'my'          Keyword
' '           Text
'$'           Name.Variable
'o'           Name.Variable
' '           Text
'='           Operator
' '           Text
'"foo"'       Literal.String
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'o'           Name.Variable
','           Punctuation
' '           Text
'" - "'       Literal.String
';'           Punctuation
'\n'          Text

'$'           Name.Variable
'o'           Name.Variable
' '           Text
'=~'          Operator
' '           Text
's{\n\t\t\t\tfoo\n\t\t\t } ' Literal.String.Regex
'{bar}x'      Literal.String.Regex
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'o'           Name.Variable
','           Punctuation
' '           Text
'"\\n"'       Literal.String
';'           Punctuation
'\n\n'        Text

'print'       Keyword
' '           Text
'"p: "'       Literal.String
';'           Punctuation
'\n'          Text

'my'          Keyword
' '           Text
'$'           Name.Variable
'p'           Name.Variable
' '           Text
'='           Operator
' '           Text
'"foo"'       Literal.String
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'p'           Name.Variable
','           Punctuation
' '           Text
'" - "'       Literal.String
';'           Punctuation
'\n'          Text

'$'           Name.Variable
'p'           Name.Variable
' '           Text
'=~'          Operator
' '           Text
's%\n  foo\n  %bar%x' Literal.String.Regex
';'           Punctuation
'\n'          Text

'print'       Keyword
' '           Text
'$'           Name.Variable
'p'           Name.Variable
','           Punctuation
' '           Text
'"\\n"'       Literal.String
';'           Punctuation
'\n'          Text
