|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Serge Cherpatyuk 2:4625/44.41 14 Aug 2000 19:32:34 To : All Subject : algorithm --------------------------------------------------------------------------------
Отступление: сисадму - "сисадмячья" смерть ;), т.е. девелопер
из меня никакой ;(
Задача: написать обработчик апачевского лог-файла
Чего сделано: выдаёт к камому файлу сколько раз обращались
Хотелось бы: что бы выдавало - к "этому" файлу обращались
"столько-то" раз "такого-то" числа.
Вот тут-то я и прошу подсказать алгоритм.
Код "чего сделано":
==================================================
#!/usr/bin/perl
use strict;
my @LogFiles =
(
"/home/gray/work/perl/sites/log_obr/access_log",
);
my
(
$LogFile,
$i,
);
#main
# {
for($i = 0; $i <= $#LogFiles; $i++)
{
$LogFile = $LogFiles[$i];
&DoLog;
}
# }
sub DoLog
{
my
(
$IP, $un1, $un2, $w_date, $s_gmt, $method, $r_file,
$protocol, $code1, $code2,
@date_time, $date, $time,
%Urls,
);
undef( %Urls );
return 1 if( ! -r $LogFile);
if( !open( flog, $LogFile))
{
print "Cannot open $LogFile: $!\n";
return 0;
}
while( <flog> )
{
chop;
( $IP, $un1, $un2, $w_date, $s_gmt, $method, $r_file, $protocol,\
$code1, $code2 ) = split( /[ ]+/,$_,10);
@date_time = split( /:/,$w_date, 2);
($date = $date_time[0]) =~ s/^\[//;
$time = $date_time[1];
$method =~ s/^\"//;
$protocol =~ s/\"$//;
if ( !defined( $Urls{$r_file} ))
{
$Urls{$r_file} = 0;
}
$Urls{$r_file}++;
}
while( (my $file, my $count) = each( %Urls ))
{
print "The file $file was requested $count times.\n";
}
}
===============================================================
Gray.
--- ifmail v.2.14.KSI2
* Origin: VIASoft, Ltd. (2:4625/44.41@fidonet)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/10400bbf11df7.html, оценка из 5, голосов 10
|