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 mailing list
[email protected] | http://moscow.pm.org

Ответить