我想在 Perl 中提取邮件的标题。我不需要身体,所以我不想花时间解析它们。
Email::Simple::Header看起来很有用,但典型的实例化涉及解析整个电子邮件(包括正文)。所以我在考虑像这样啜饮标题
local $/ = "\n\n";
my $head = <>;
my $parsed = Email::Simple::Header->new($head);
这是最有效的方法吗?
我想在 Perl 中提取邮件的标题。我不需要身体,所以我不想花时间解析它们。
Email::Simple::Header看起来很有用,但典型的实例化涉及解析整个电子邮件(包括正文)。所以我在考虑像这样啜饮标题
local $/ = "\n\n";
my $head = <>;
my $parsed = Email::Simple::Header->new($head);
这是最有效的方法吗?
我不确定这是否会为您节省任何时间。Email::Simple 不会解析电子邮件的正文。它查看正文的唯一时间是通过调用将其从标题中拆分出来Email::Simple::_split_head_from_body()
。这与您正在做的事情几乎相同$/ = "\n\n"
,但更好地处理不同类型的换行符。
除非您有分析证据表明您的程序在不必要的电子邮件正文解析上花费了大量时间(不管它会在那里解析什么),否则请避免过早优化并Email::Simple
正常使用该模块。
长度为零的行将标头与消息的其余部分分开。您的 perl 脚本可以简单地读取传入消息直到第一个零长度行,这就是标题。