Программирование > Perl

Помогите с скриптом

<< < (2/3) > >>

arto:
ничего, а первое выражение еще и написано с ошибкой (в данном контексте)

Yaroslav:
@ARGV[0]!=/^\\w+\\.txt/
первый аргумент масива содержит несколько букв или цифр + .txt

$line=~/^\\s+$/;
переменная от начала и до конца содержит пробел или несколько

$line=~/^\\s(\\d+)/;
переменная от начала содержит пробел и цифры

MorphTM:
хм спасибо.
я теперь запутался.
Значит на ПХП написана форма для выбора текстового файла

--- Код: ---




Cистема автоматизации отправки



--- Конец кода ---


она передает его скрипту для рассылки по электроным адресам. каждому свой кусок с этого файла.

--- Код: ---
!D:/server/APACHE/perl/bin/Perl.exe -w

use strict;


if(! defined @ARGV || @ARGV[0]!=/^\\w+\\.txt/){die "Usage checks.pl [filename.txt]\\n";}

 ##Logging
open (LOG,">>D:/server/APACHE/web/site/cgi/checks/checks.log");
my $time=localtime();
print File " *********** CKECKS.PL LOGGING FACILITY STARTED**************\\n";
print LOG "$time Opening checks file....\\n";
open(FD,@ARGV[0]) and print LOG("$time Cannot open checks file....@ARGV[0]\\n");
my @linez;
my $megaline;
my $conv = Text::Iconv->new("cp1251", "koi8u");
foreach my $line(){
chomp($line);
next if($line=~/^\\s+$/);
my $cc = $conv->convert($line);
$megaline.=$cc."\\n";
}
my %cities=(
"2650755"=>"gorod1",
"2650655"=>"gorod2",
"2650555"=>"gorod3",
"2650455"=>"gorod4",
"2650355"=>"gorod5",
"2650255"=>"gorod6",
"2650155"=>"gorod7",
"2650055"=>"gorod8",
"2650955"=>"gorod9",

);
my %emails=(
"gorod1"=>"эл.адресс",
"gorod2"=>"эл.адресс",
"gorod3"=>"эл.адресс",
"gorod4"=>"эл.адресс",
"gorod5"=>"эл.адресс",
"gorod6"=>"эл.адресс",
"gorod7"=>"эл.адресс",
"gorod8"=>"эл.адресс",
"gorod9"=>"эл.адресс",

);

my @megalines=split("уЮЕФ ЛМЙЕОФБ : ",$megaline);


$megalines[5]=~/чщрйулб йъ мйгечпзп уюефб ъб (\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d)/;
my $date=$1;
print LOG "$time Writing checks for date $date\\n";
#mkdir("/mnt/disk/vipiski/$date",0777) or print LOG "Cannot create directory...\\n";
my $conv1 = Text::Iconv->new("koi8u", "cp1251");
use Net::SMTP;
while(@megalines){
my $smtp = Net::SMTP->new(\'ip adress servera\');
my $line=shift(@megalines);
$line=~/^\\s(\\d+)/;
my $city=$1;
if(! exists($cities{$city})){next};
my $ucity=uc($cities{$city});
open(PZ,">D:/server/APACHE/web/site/cgi/checks/$date/$cities{$city}.txt");
print PZ "******** $ucity ==> $date *********";
my $cc = $conv1->convert($line);
print PZ "$cc\\n";
close PZ;
$smtp->mail("эл.адресс");
# $smtp->to("эл.адресс");
$smtp->to($emails{$cities{$city}});
$smtp->data();
my $subj=$conv1->convert("чЩРЙУЛЙ ЪБ");
$smtp->datasend("Subject: $subj $date\\n");
$smtp->datasend("\\n");
if($cities{$city} eq "gorod"){
$smtp->datasend("$line\\n");
}
if($cities{$city} eq "gorod"){
$smtp->datasend("$line\\n");
}
if($cities{$city} eq "gorod"){
$smtp->datasend("$line\\n");
}

else{
$smtp->datasend("$cc\\n");
}
$smtp->dataend();
$smtp->quit;

print LOG "$time Successfully sent to $emails{$cities{$city}}\\n";
}
my $time=localtime();
print LOG "$time FINISHED \\n**********************************************************\\n";
#`/sbin/umount /mnt/disk`;

--- Конец кода ---

Так я не могу понять каким образом он выбирает.
Да и сам лог файл не открывается и нечего не записывается в него.
Раньше был на Linuxe теперь перенес на хп. но он не работает.
Файл передается и на этом все заканчивается.

Можит что-то не так сделал?

Вобщем подскажите что и как?

cr4ck3r:
Код на Perl - ужасен.
 ##Logging
[B]открываем для логов один дескриптор[/B]
open (LOG,">>D:/server/APACHE/web/site/cgi/checks/checks.log");
my $time=localtime();
[B]а пишем в другой?!?[/B]
print File " *********** CKECKS.PL LOGGING FACILITY STARTED**************\\n";
print LOG "$time Opening checks file....\\n";
open(FD,@ARGV[0]) and print LOG("$time Cannot open checks file....@ARGV[0]\\n");

вообще открывать файлы лучше либо через модуль IO::File, либо уж на худой конец так:
open(FILE,">>","filename.txt") || die "Error :$!\\n";
здесь хотя бы будет понятно что произойдет в случае ошибки открытия.

MorphTM:
C этим понятно. А вот как скрипт выбирает из текста что кому послать???

Навигация

[0] Главная страница сообщений

[#] Следующая страница

[*] Предыдущая страница

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 
Перейти к полной версии