Автор Тема: Два if - несрабатывают  (Прочитано 2693 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Skif

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 187
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Два if - несрабатывают
« : 08 Июня 2005, 14:15:41 »
есть код код который выводит список сообщений в ящике:

#!/usr/bin/perl -w

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

my $pop = new Mail::POP3ClientUSER => "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::POP3ClientUSER => "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, а по теме нет...
Можете подсказать, где я напортачил?
Всё будет хорошо - я договорился!

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Два if - несрабатывают
« Ответ #1 : 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 решает... ;)
And no religion too...

Оффлайн Skif

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 187
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Два if - несрабатывают
« Ответ #2 : 08 Июня 2005, 15:08:22 »
Экранирование стоит перед @, здесь проблем нету (просто в тегах не видно, а так оно есть)
Всё будет хорошо - я договорился!

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Два if - несрабатывают
« Ответ #3 : 08 Июня 2005, 15:13:18 »
warn $from;
And no religion too...

Оффлайн Skif

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 187
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Два if - несрабатывают
« Ответ #4 : 08 Июня 2005, 15:23:20 »
м-да...
Действительно, провтыкал, что у меня skif\\@xxx.xxx.com.ua , а должно быть skif\\@xxx.kiev.ua
Спасибо
Всё будет хорошо - я договорился!

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28