#!/usr/bin/perl -w
open(ALL, "access.log") || die "$!"; #open file read
@sa=<ALL>; #zanosim sodrgimoe faila v massiv @sa
for($i=0;$i<@sa;$i++) #sozdaem cukl v katorom i uvelichivaetsa na 1
{ #blogadora etomu mu kopiruem kagduq stroku v massiv @str
@str=$sa[$i];
@date=<@str>; #peremennoi @size1 kagduq strochku
@st=localtime(${date[0]})."\n"; #perevodim vrema
for($s=0; $s<@st; $s++)
{
if($st[$s]=~m/Fri Jan 10/) #nahodimnugnue stroki i pomehem v masiv @st
{
open(DATES, ">>data")||die "$!"; #otkruvaem fail dla zapisi
print DATES $st[$s]; #copiruem sodergimoe @cp v fail DATES
print DATES $date[4]," "; #copiruem sodergimoe @cp v fail DATES
print DATES $date[2]," "; #copiruem sodergimoe @cp v fail DATES
close(DATES); #close file
open(USER, ">>$date[2]")||die "$!";
print USER $st[$s];
print USER $date[4], " ";
print USER $date[2], " ";
close(USER);
open(USER, ">>$date[2].tmp")||die "$!";
print USER $date[4],"\n";
close(USER);
open(USER, "$date[2].tmp")||die "$!";
@bit=<USER>;
sub summa
{
my $rezult;
foreach my $bit (@_) { $rezult += $bit }
return $rezult;
}
$sum = summa(@bit);
close(USER);
open(USER, ">$date[2].itog")||die "$!";
print USER "$sum";
close(USER);
}
}
}
close(ALL);
===============================================================
Вобщем он все делает как надо сравнивал с sargom результаты одинаковы но естmь маленькая непрbятнось : интерпретатор выдает сообщение>>
>>
1)Use of uninitialized value in localtime at ./t.pl line 10, <ALL> line 59783.
2)Argument "1042022202.429 561 192.168.1.253 TCP_MISS/200 1274 GE..." isn't numeric in localtime at ./t.pl line 10, <ALL> line 59783.
эти сообщения ни как не сказываются на скрипте но все же не хотелось бы их видеть.
плиз не предлогайте убрать ключ -w хотелось бы понять вчем дело.
Огромно всем спосибо кто откликнится.
p.s сорри за ошибки.