У меня проблема с Perl.я хочу разобрать объект электронной почты или журнал или файл что угодно.Я хочу узнать, откуда приходит почта.сначала я должен проверить строку «x-envelop-from», если совпадение не найдено, тогда мне нужно проверить строку «from».
это часть моего образца файла:
X-Envelope-From:
<kamil@yahoo.com>
From: "=?iso-8859-9?B?RXYgVGH+/W1hY/1s/fD9bmRhIsdfyhjdbmRRmltIFNlem9u?=
=?iso-8859-9?B?dQ==?=" <kamil@yahoo.com>
мой код печатает 2 строки для этого файла:
kamil@yahoo.com
kamil@yahoo.com
мотыга возможна, обе строки печатаются в if и 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";
}
}
заранее спасибо.