[Moscow.pm] Быстрый парсинг email-сообщений

Kaltashkin Eugene zhecka на gmail.com
Пт Фев 6 02:50:00 PST 2009


Walery Studennikov пишет:

($header,$body) = split (/\n\n/,$message,2);
Читайте RFC :)
> Hi.
>
> Сейчас дописываем свой модуль для работы email-сообщениями
> (парсинг сообщений, сопоставление с шаблонами, поиск нужных сообщений в mbox-ах,
> выдирание из них нужной информации и т.д. и т.п.).
> Основные требования:
> - модуль должен быть ультратёгким, без лишних зависимостей,
> - ультрабыстрым (т.к. будет перемалывать большие массивы данных).
>
> Когда модуль устаканиться, выложим на CPAN.
>
> Так вот, одна из загвоздок, с которой столкнулись -- это
> отделение header от body в rfc822-сообщениях.
>
> Т.е. нужно некое преобразование, которое
> на входе получает целое сообщение ($message),
> на выходе -- разрезанное: $header, $body.
>
> Сейчас используется:
> @$self{ qw/raw_header body/ } = ($body =~ m/(.+?)(?:\r?\n){2}(.+)/som);
> До этого использовалась комбинация index / substr.
> Однако, скорость преобразования при этом недостаточна.
>
> Вопрос: как это можно сделать наиболее быстро на Perl, не прибегая к XS.
>
> Ваши варианты? ;)
>
>   



Подробная информация о списке рассылки Moscow-pm