Euh, le module Email::MIME, je ne l'ai jamais utilisé, je ne vais pas trop pouvoir t'aider à ce sujet.
Sur les expressions régulières, voici une explication de la dernière version que j'ai proposée:
/^(\w{3} +\d+ +\d+:\d+:\d+)[^=]+ to=<([^>]+)>,/;
Une regex décrit progressivement le texte à reconnaître:
- '^' : début de la chaîne, suivi de
- '(' : parenthèse indiquant le début de la première capture ($1)
- '\w{3}' : trois caractères alphanumériques, suivi de
- ' +' : un ou plusieurs espaces, suivi de
- '\d+' :un ou plusieurs chiffres, suivi de
- ' +' :un ou plusieurs espaces, suivi de
- '\d+:' : un ou plusieurs chiffres, suivi d'un ':', suivi de
- '\d+:' : un ou plusieurs chiffres, suivi d'un ':', suivi de
- '\d+' un ou plusieurs chiffres, suivi de
- ')' : fin de la première capture ($1)
- '[^=]+' : Les crochets indiquent une classe de caractères, le ^ en début de classe de caractère indique tous les caractères sauf ceux définis dans le reste de la classe; '[^=]+' indique donc un ou plusieurs (autant que possible) caractères autres que le '='; suivi de
- 'to=<' : la suite littérale de caractères 'to=<', suivi de
- '(' : parenthèse indiquant le début de la seconde capture ($2)
- '[^>]+' : nouvelle classe de caractères indiquant un ou plusieurs caractères (autant que possible) autres que '>', suivi de
- ')' : fin de la seconde capture ($2)
- '>,' : la suite littérale de caractères '>,'
Certes, il y a quelques éléments de syntaxe à connaître, mais j'espère que tu vois, en décortiquant pas à pas, que ce n'est finalement pas si mystérieux que ça peut en avoir l'air.
Partager