0
我有一个问题与Perl。我想解析一个电子邮件对象或记录或文件。我想找到邮件来自哪里。首先我必须检查“x-envelope-from”行,如果不匹配,那么我必须检查“from”行。如何检查字符串是否与perl中的正则表达式匹配?
这是我的一些示例文件:该文件
X-Envelope-From:
<[email protected]>
From: "=?iso-8859-9?B?RXYgVGH+/W1hY/1s/fD9bmRhIsdfyhjdbmRRmltIFNlem9u?=
=?iso-8859-9?B?dQ==?=" <[email protected]>
我的代码打印2行:,两个打印行,如果印刷在
[email protected]
[email protected]
锄头可以是可能的,并且ELSIF?检查比赛时有问题吗?
while ($line = <FILE>)
{
my ($from, $to, $spam_id, $date, $tmp_date, $m_day, $m_mon, $m_year, $m_hour, $m_min, $pos_tmp);
my ($subject);
#
if ($line =~ m/^(X-Envelope-From:).*/) {
if ($line =~ m/^X-Envelope-From:.*<(.*)>.*/) {
$from = $1;
}
else {
$line = <FILE>;
if ($line =~ m/.*<(.*)>.*/) {
$from = $1;
}
}
print $from . "\n";
}
elsif ($line =~ m/^(From:).*/) {
if ($line =~ m/^From:.*<(.*)>.*/) {
$from = $1;
}
else {
$line = <FILE>;
if ($line =~ m/.*<(.*)>.*/) {
$from = $1;
}
}
print $from . "\n";
}
}
在此先感谢。
有两行输出,因为你必须输入的两行。对于第一行,“if”条件是真的(打印一个电子邮件地址),对于第二行,“elsif”条件是真的(它也打印一个电子邮件地址) – Gareth
是的抱歉我的错误,我修好了,但也有一些关于正则表达式的东西。谢谢 – kursat