А не проще (быстрее) так? 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
smime.p7s
Description: S/MIME Cryptographic Signature
-- Moscow.pm mailing list [email protected] | http://moscow.pm.org
