Creo que he dado con la solución, claro, he tenido que usar dos bucles while , y cambiar la expresión regular recursiva a : [perl]my $anidado = qr/(\{(?>[^\{\}\\]++|\\.|(?R))*+\}) /x;[/perl] Funciona en todos los casos que he probado, al final quedó así: [perl lines=geshi-n]#!/usr/bin/env perl use v...