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

Walery Studennikov despairr на gmail.com
Пт Фев 6 02:47:00 PST 2009


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.

Ваши варианты? ;)

-- 
Walery Studennikov
http://www.reg.ru/


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