{{\escape\sequences \more\sequences{\yet\more}\again\some\more\sequences Some Data}{\foo\bar Some Other Data}} #### { { \escape\sequences \more\sequences { \yet\more } \again\some\more\sequences Some Data } { Some Other Data \foo\bar } } #### use strict; use warnings; my $text = "{{\\escape\\sequences \\more\\sequences{\\yet\\more}\\again\\some\\more\\sequences Some Data}{\\foo\\bar Some Other Data}}"; while ($text =~ /\G([{}])/g) { print "Token: '$1'\n"; if ($text =~ /\G([^{}]*)/g) { my $chunk = $1; while ($chunk =~ /(\S+|\s+)/g) { print "Token: '$1'\n"; } } }