¿Regex con expresión recursiva para que coincida con llaves anidadas?

Estoy tratando de hacer coincidir texto comosp { ...{...}... }, donde las llaves se permiten anidar. Esto es lo que tengo hasta ahora:

my $regex = qr/
(                   #save $1
    sp\s+           #start Soar production
    (               #save $2
        \{          #opening brace
        [^{}]*      #anything but braces
        \}          #closing brace  
        | (?1)      #or nested braces
    )+              #0 or more
)
/x;

Simplemente no puedo hacer que coincida con el siguiente texto:sp { { word } }. ¿Alguien puede ver lo que está mal con mi expresión regular?

Respuestas a la pregunta(2)

Su respuesta a la pregunta