Forum Webscript.Ru

Программирование => Perl => Тема начата: Skif от 08 Июня 2005, 14:15:41

Название: Два if - несрабатывают
Отправлено: Skif от 08 Июня 2005, 14:15:41
есть код код который выводит список сообщений в ящике:

#!/usr/bin/perl -w

use Mail::Sender;
use Mail::POP3Client;

my $pop = new Mail::POP3Client( USER => "skif",
PASSWORD => "rfn.if",
HOST => "10.0.43.27");

for ($i = 1; $i <= $pop->Count(); $i++) {
my $from = \'\';
my $subject = \'\';
foreach ( $pop->Head( $i ) ) {
/^From:\\s+/i and $from = "$_\\n";
/^Subject:\\s+/i and $subject = "$_\\n";
}
print "$from$subject\\n";
}

exit(0);


Вот его вывод:
Цитировать

[root@skif.bsd] /usr/local/script/smtp/bin/:./smtp_send.pl
From: skif@xxx.com.ua
Subject: test7

From: skif@xxx.xxx.com.ua

From: root@xxx.xxx.com.ua (Charlie Root)
Subject: skif.center.xxx security run output

From: root@xxx.xxxcom.ua (Charlie Root)
Subject: skif.center.xxx daily run output

From: skif@xxx.kiev.ua
Subject: Here is the file

From: root@xxx.xxx.com.ua (Charlie Root)
Subject: skif.center.xxx security run output

From: root@xxx.xxx.com.ua (Charlie Root)
Subject: skif.center.xxx daily run output

[root@skif.bsd] /usr/local/script/smtp/bin/:



Тут проблем нет.
Возникают, когда пытаюсь из всего списка выделить одно письмо:
Цитировать

From: skif@xxx.kiev.ua
Subject: Here is the file


пишу такой код:

#!/usr/bin/perl -w

use Mail::Sender;
use Mail::POP3Client;

my $pop = new Mail::POP3Client( USER => "skif",
PASSWORD => "rfn.if",
HOST => "10.0.43.27");

for ($i = 1; $i <= $pop->Count(); $i++) {
my $from = \'\';
my $subject = \'\';
foreach ( $pop->Head( $i ) ) {
/^From:\\s+/i and $from = "$_\\n";
/^Subject:\\s+/i and $subject = "$_\\n";
}
$rr =\'Here is the file\';
if ($subject=~ m/$rr/gi){
print "!!!\\n";
print "Message index in server = $i\\n";
if ($from =~ m/skif\\@xxx.xxx.com.ua/gi) {
print "$from$subject\\n";
}
}
}

exit(0);


Вывод же получаю вот такой:
Цитировать

[root@skif.bsd] /usr/local/script/smtp/bin/:./smtp_send.pl
!!!
Message index in server = 5
[root@skif.bsd] /usr/local/script/smtp/bin/:


А вот от кого и тему не печатает... :( Тоесть, по теме сработал, а по from нет... Пытаюсь менять местами, но опять срабатывает по from, а по теме нет...
Можете подсказать, где я напортачил?
Название: Два if - несрабатывают
Отправлено: commander от 08 Июня 2005, 14:55:30
Skif
if ($from =~ m/skif@xxx.xxx.com.ua/gi)
==
if ($from =~ m/skif\\@xxx.xxx.com.ua/gi)
 ?

а вообще в таких ситуациях warn решает... ;)
Название: Два if - несрабатывают
Отправлено: Skif от 08 Июня 2005, 15:08:22
Экранирование стоит перед @, здесь проблем нету (просто в тегах не видно, а так оно есть)
Название: Два if - несрабатывают
Отправлено: commander от 08 Июня 2005, 15:13:18
warn $from;
Название: Два if - несрабатывают
Отправлено: Skif от 08 Июня 2005, 15:23:20
м-да...
Действительно, провтыкал, что у меня skif\\@xxx.xxx.com.ua , а должно быть skif\\@xxx.kiev.ua
Спасибо