J'ai ORDER BY partie de la déclaration et je dois le diviser au niveau des parties logiquesdivision: regex d'ignorer l'intérieur délimiteurs entre parenthèses équilibrée
my $sql_part = <<EOH
IF(some_table.some_field <> 3, 1, 0),
some_table.other_field,
CASE other_table.third_field WHEN IS NULL THEN 2 ELSE 1 END,
other_table.third_field
EOH
et, vous le savez, chaîne d'origine ne contient pas des sauts de ligne et les IF peuvent être imbriqués. Le problème est que je ne veux pas diviser le contenu à l'intérieur des IF imbriqués, appels de fonction.
Si simple split /\s*,\s*/, $sql_part
ne fonctionnera pas.
Existe-t-il une regex qui peut faire cela, ou devrais-je le faire différemment?
Pour le bénéfice des moteurs de recherche: lorsqu'un analyseur spécialisé comme dans la réponse donnée est d'aucune utilité, [ 'Data :: Record'] (http://p3rl.org/Data::Record) fera le travail. – daxim