Xpoint
   [напомнить пароль]

Снова оптимизация

Метки: [без меток]
[удл]
2007-08-26 22:01:21 [обр] Andrej[досье]

Помогите пожалуйста снова оптимизировать и немного доделать скрипт.

Идея такая, при каждой загрузки скрипт открывает файлик user.ini
В нем примерно такой текст:

3;vasja@mail.ru;время
1;kolja@mail.ru;время
2;petja@mail.ru;время
1;vasja83@mail.ru;время

После скрипт проходит по этим строчкам и отправляем им письма.
Тоесть:

3;vasja@mail.ru;время – нужно открыть еще один файлик с именем 3.text в нем rand-омом выбрать случайную строчку и отправить ее.
1;kolja@mail.ru;время – нужно открыть еще один файлик с именем 1.text в нем rand-омом выбрать случайную строчку и отправить ее.
2;petja@mail.ru;время – нужно открыть еще один файлик с именем 2.text в нем rand-омом выбрать случайную строчку и отправить ее.

И так далее.

Примечание:
В файликах 1.text, 2.text, 3.text данные хранятся вот так:

Имя;имя2;время;город;отправляемый текст;ип

Отправлять нужно только "отправляемый текст"
И если скрипт загружен 15 числа любого месяца, всем пользователям с файла user.ini нужно также отправить на почту текст "Pro6el mesjac"
Надеюсь у кого ни будь найдется свободная время чтоб помочь мне.

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time());
$DateTime = sprintf ("%.2ld",$mday);

open(SM, "< $directory/$smki") or die "Can't open files $!\n";
flock(SM,LOCK_SH); # на открытие
my @sm =<sm>;
close(SM) or die "Can't close file $!\n";
my $smname; my $smmail; my $smurl; my $smtim; my $smcity; my $smip; my $smtext; my $smanswer;
my $randsm = $sm[rand @sm];
($smname,$smmail,$smtim,$smcity,$text,$smip) = split(/;/,$randsm);

open (SEND, "< $directory/$dispatch") or die "Can't open file comment $!\n";
flock(SEND,LOCK_SH); # на открытие
my @send =<SEND>;
close(SEND) or die "Can't close $!\n";

for(my $i=0; $i<=$#send; $i++){
$smtp = Net::SMTP->new($mail_server);       # Указываем SMTP сервер.
$smtp->mail('sm@prv.ru');                 # Указываем от кого письмо.
$smtp->to($send[$i]);                     # Указываем кому письмо. 
$smtp->data();                                # Начинаем посылку данных
$smtp->datasend("To: \n"); # Указываем информацию для поля "Кому"
$smtp->datasend("From: sm\@prv.ru\n"); # от кого
$smtp->datasend("Subject:inf\n");                        # Указываем тему письма
$smtp->datasend("\n");                        # Пустая строка
$smtp->datasend(" $text ");            # Сообщение
$smtp->dataend();                             # Заканчиваем посылку даных
$smtp->quit;                                  # Закрываем соединение
}

if ($DateTime eq '15'){ 
for(my $i=0; $i<=$#send; $i++){
$smtp = Net::SMTP->new($mail_server);       # Указываем SMTP сервер.
$smtp->mail('sm\@prv.ru');                 # Указываем от кого письмо.
$smtp->to($send[$i]);                     # Указываем кому письмо. 
$smtp->data();                                # Начинаем посылку данных
$smtp->datasend("To: \n"); # Указываем информацию для поля "Кому"
$smtp->datasend("From: sm\@prv.ru\n"); # от кого
$smtp->datasend("Subject:inf\n");                        # Указываем тему письма
$smtp->datasend("\n");                        # Пустая строка
$smtp->datasend("Pro6el mesjac");            # Сообщение
$smtp->dataend();                             # Заканчиваем посылку даных
$smtp->quit;                                  # Закрываем соединение
}
}

exit(0);
спустя 2 часа 39 минут [обр] Алексей Севрюков(198/1280)[досье]
Andrej[досье] Знаете, пора бы уже начинать включать мозг самому. Уже год прошел, а Вы все еще в основах и всем те же непонятные конструкции пишите.
спустя 11 секунд [обр] Алексей Севрюков(198/1280)[досье]
М Перенесено из форума "Программирование::Perl::Разное"
спустя 9 часов [обр] Роман Чемисов(56/327)[досье]

Andrej[досье]
Меня радует, что за два года, Вы научились оформлять свои сообщения :-). Весь скрипт не смотрел, дошёл до 6-й строчки в которой ошибка:

my @sm =<sm>;

открывали Вы SM....
Отсюда вывод: всегда начинайте свои программы вот так:

use strict;
Powered by POEM™ Engine Copyright © 2002-2005