All pastes #2052565 Raw Edit

Something

public text v1 · immutable
#2052565 ·published 2011-05-01 17:34 UTC
rendered paste body
#!/usr/bin/perl
use strict;
use warnings;
sub average {
        my ($summ, $count) = "0";
        foreach (@{ $_["0"] }) {
                $count++;
                $summ = $summ + $_;
        }
        return sprintf "%.3f", $summ/$count;
}
my $file = "/var/log/nginx/somedomain.ru.nginx_perf.log";
my %data;
my @result;

open PERF,'<',$file or die "Error: $!!\n";
while (<PERF>) {
        chomp;
        next unless /" 200/;
        if (/api\.php/) {
                s/^\d{10}\.\d{3} (\d+.\d{3}).+$/\/vkontakte $1/g;
        } else {
                s/^\d{10}\.\d{3} (\d+.\d{3}) .+92.243.67.106((\w|[\/])+).*$/$2 $1/g;
        }
        s/(.+)\/id\/\d+.* (\d+.\d{3})/$1 $2/;
        my ($url, $time) = split / /;
        if (exists($data{"$url"})) {
                push @{ $data{"$url"} }, $time;
        } else {
                $data{"$url"} = [ $time ];
        }
}
close PERF;

foreach my $url (keys %data) {
        my $avg = average \@{ $data{$url} };
        my $num = $#{ $data{$url} } + "1";
        my $output = $avg . "\t$num\t$url";
        push @result, $output;
}
foreach (sort {$b cmp $a} @result) {
        print;
        print "\n";
}