[Moscow.pm] Быстрый парсинг email-сообщений
Kaltashkin Eugene
zhecka на gmail.com
Пт Фев 6 05:24:01 PST 2009
Walery Studennikov пишет:
> В общем, сплиттер header / body оптимизировали, это хорошо ;)
>
> Теперь наибольшим тормозом стал парсер mbox-ов.
> Сейчас используется такая конструкция:
>
> while ($_ = <$fh>) {
> if (m/^(From .* \w\w\w \w\w\w (\d|\s)\d \d\d:\d\d:\d\d \d+)\n$/) {
> _do_process_message( \$out, %param ) if $out;
> $out = '';
> }
> else {
> $out .= $_;
> }
> }
>
> Можно ли придумать что-то быстрее для ПОТОКОВОГО парсинга?
>
>
поменять например mbox в maildir.
По поводу From
всё проще.
undef $/;
open IN,"<mail.txt";
$head = <IN>;
close IN;
$head =~ s#\n(\t|\s+) ##g;
$/ = "\n";
foreach my $line (split /\n/,$head)
{
my ($name,$value) = split (/\:\s/ ,$line);
print $name,":::",$value,"\n";
}
Дальше всё обрабатывается decode_qt, decode_base64 + iconv по вкусу.
Подробная информация о списке рассылки Moscow-pm