P: Como reconhecer e processar estruturas textuais relativamente complexas? Ex: fórmulas matemáticas como: z^2 = ((1^(sqrt(zx))/(x^(x*y)))/e-(xy-235)^(1/2))/(8-(x^(y-1)))
R: Você pode se arriscar construir uma expressão regular imensa, que muito provavelmente só funcionará para um subconjunto limitado da estrutura do texto de entrada, ou pode usar o módulo Regexp::Grammars[1]. Com ele é possível processar estruturas textuais complexas, hierárquicas e até recursivas. O Regexp::Grammars se aproveita de algumas novas funcionalidades introduzidas no Perl 5.10 para adicionar algumas extensões nas expressões regulares permitindo definir a estrutura dos dados de entrada usando construções em forma de gramáticas[2]. No fim da operação você tem disponível na variável %/ seus dados hierarquicamente representados numa estrutura em árvore de hashes aninhados. Vale a pena dar uma olhada nos exemplos da documentação e na pasta demo/ presente no diretório raiz do módulo. [1] https://metacpan.org/module/Regexp::Grammars [2] http://www.engr.mun.ca/~theo/Misc/exp_parsing.htm =begin disclaimer Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ SaoPaulo-pm mailing list: SaoPaulo-pm@pm.org L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> =end disclaimer