2013-07-11 31 views
0

我想在Perl中提取郵件消息的標題。我不需要身體,所以我不想花時間解析它們。從Perl中的郵件中獲取標題(只是標題)

Email::Simple::Header看起來很有用,但典型的實例涉及解析整個電子郵件(包括主體)。所以我在考慮sl like這樣的標題

local $/ = "\n\n"; 
my $head = <>; 
my $parsed = Email::Simple::Header->new($head); 

這是最有效的方法嗎?

回答

2

我不確定這會爲您節省多少時間。電子郵件的正文沒有被Email :: Simple解析。它看起來唯一的一次是通過調用Email::Simple::_split_head_from_body()將它從標題中分離出來。這與你在$/ = "\n\n"中做的事情基本相同,但更好地處理不同類型的換行符。

除非您有足夠的證據證明您的程序花費了大量時間在不必要的電子郵件羣體解析上(無論它會在哪裏解析),請避免過早優化,並且通常只使用Email::Simple模塊。

+0

Donig it was 33%slow,tested on a mailbox of 1500 mixed-sized mail。有道理 - 如果你不需要,爲什麼要讀取所有的數據。儘管如此,請您留意一下換行符... – artfulrobot

1

長度爲零的行將標題與郵件的其餘部分分開。你的perl腳本可以直接讀入到第一個零長度行的消息,這就是頭文件。

+0

是的,這基本上是我的腳本通過設置'$/=「\ n \ n」'所做的。另外,可以將它設置爲'「」',它將匹配任意數量的連續空白行。 – artfulrobot