my $np; $np= qr{ \{ (?: (?> [^ \{\} ]+) | (??{$np}) )* \} }x; my $text = " functio { 1 {2*3} }"; my $funcpat = qr/(\w+)($np)/ms; if ($text =~/^$funcpat/ms){ print "\n\nmatches\n"; print "$1\n"; print "$2\n"; print $text;