|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Sergey Gernichenko 2:5079/32.34 11 Nov 2001 17:58:02 To : All Subject : Что можно записать "поперловее"? --------------------------------------------------------------------------------
Вот этот скрипт целиком. Всё в нём работает. Сабж.
=== begin ptsgen.pl ===
#!perl
#первый аргумент - путь к points.cfg
#второй аргумент - путь к поинтсегменту
#третий аргумент - путь к лог-файлу.
use POSIX qw(strftime);
@def=("Point","","Unknown","Surgut","","-Unpublished-","9600","MO\n");
open points,"<$ARGV[0]" || die "Файл не открывается";
/^\s*(\d+)\s+4[dD]\s+([^;]+?)\s*($|;)/ && $1>0 && ($p{$1}=$2)=~ s/ +/_/g while
(<points>);
close points;
open pts,"<$ARGV[1]" || die "Файл $! не открывается";
open out,">tmp" || die "Файл $! не открывается";
$total=scalar (@sd=sort {$a <=> $b} keys %p);
while (<pts>)
{
@q=split (",",$_);
#print "'$_'\n";
if (/^Point/)
{
if (!defined $p{$q[1]}) #Если поинт удалён, то удалить и строчку
{
push @deleted,$_;
next;
};
while (($minp=shift @sd) < $q[1])
#Если поинт(ы) добавились (в начале или середине сегмента)
{
$def[1]=$minp;
$def[4]=$p{$minp};
print out join (",", @def);
push @added,join (",", @def);
}
if ($p{$q[1]} ne $q[4]) #Если поинт изменился
{
$def[1]=$q[1];
$def[4]=$p{$q[1]};
push @changed,(";".join (",", @q).join (",", @def));
@q=@def;
}
}
print out join (",", @q);
}
close pts;
while ($minp=shift @sd) #Если поинт(ы) добавились (в конце сегмента)
{
$def[1]=$minp;
$def[4]=$p{$minp};
print out join (",", @def);
push @added,join (",", @def);
}
close out;
unlink $ARGV[1];
rename "tmp", $ARGV[1];
open fl,">>$ARGV[2]" || die "Файл $! не открывается";
print fl "\n\n".(strftime "%m.%d.%Y %H:%M:%S", localtime)."\n";
print fl "Добавлено поинтов: ".(scalar @added)."\n".join ("",@added);
print fl "Изменено поинтов: ".(scalar @changed)."\n".join ("",@changed);
print fl "Удалено поинтов: ".(scalar @deleted)."\n".join ("",@deleted);
print fl "Всего поинтов на ноде: $total\n";
close fl;
=== end ptsgen.pl ===
Sergey
--- GoldED+/W32 1.1.5-1017
* Origin: Hет его пока... (2:5079/32.34)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/33483bee69ae.html, оценка из 5, голосов 10
|