私はperlに問題があります。私は電子メールオブジェクトを解析するか、ログやファイルを何でも作成したい。私はどこからメールが来るのかを知りたい。最初に "x-envelop-from"行をチェックしなければなりません。一致しなければ、 "from"行をチェックする必要があります。stringが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";
}
}
ありがとうございました。
あなたが入力の2行を持っているので、出力の2行があります。最初の行については、 'if'条件は真(電子メールアドレスを出力します)であり、2行目は' elsif'条件が真(これも電子メールアドレスを出力します)です。 – Gareth
はい私の間違いは、正規表現についても何かがありました。ありがとうございました – kursat