Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Serge Cherpatyuk                     2:4625/44.41   15 Aug 2000  17:32:22
 To : Serge Cherpatyuk
 Subject : Re: algorithm
 -------------------------------------------------------------------------------- 
 
 SC> Хотелось бы: что бы выдавало - к "этому" файлу обращались
 SC>              "столько-то" раз "такого-то" числа.
 SC>              Вот тут-то я и прошу подсказать алгоритм.
 
 таки сам сделал. Хочу что бы "попинали" код (желательно без 
 "пальцев", а по делу ;) ). Может, чему полезному научусь.
 
 Предмет "пинания":
 ============================================================
 #!/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, $c_date,
     %Urls, @list, $i, $y,
    );
   
   undef( %Urls );
   undef( $c_date );
   $i = 0;
 
   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( $r_file =~ /[gif,jpg,\/]$/i)
      {
       next;
      }
 
     if( !defined $c_date )
      {
       $c_date = $date;
      }
 
     if( $c_date == $date)
      {
 
       if( !defined $Urls{$r_file} )
        {
         $Urls{$r_file} = 0;
        }
       $Urls{$r_file}++;
      }
     else
      {
     
       while( (my $k, my $v) = each( %Urls ))
        {
         $list[$i] = $c_date . " " . $k . " " . $v;
         $i++;
        }
       $c_date = $date;
       undef( %Urls );
       if( !defined $Urls{$r_file} )
        {
         $Urls{$r_file} = 0;
        }
       $Urls{$r_file}++;
 
      }
    }
   while( (my $k, my $v) = each( %Urls ))
    {
     $list[$i] = $c_date . " " . $k . " " . $v;
     $i++;
    }
   for( $y = 0; $y <= $#list; $y++)
    {
     print "$list[$y]\n";
    }
  }
 ==========================================================
 
 Gray.
 --- ifmail v.2.14.KSI2
  * Origin: VIASoft, Ltd. (2:4625/44.41@fidonet)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: algorithm   Serge Cherpatyuk   15 Aug 2000 17:32:22 
 algorithm   Albert N. MICHEEV   17 Aug 2000 20:04:59 
Архивное /ru.perl/104002f0ddbd8.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional