А не проще (быстрее) так?

local $/ = "";
my $header = <STDIN>;
my @body = <STDIN>;

On 06.02.2009 13:50, Kaltashkin Eugene wrote:
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

--
Sincerely,
Dennis S.Davidoff
System/Network Engineer, Nexo Russia, Moscow
mailto: [email protected]
tel. (495) 981-6211

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить