my $q; $q = qr/(?:\[(?:(?>[^\[\]]+)|(??{$q}))+\])/;