#!/usr/bin/perl # Count the number of times people download papers # and in what format # Author: Ian Hickman use strict; my ($dloads, $abs, $total, $new, $recent, $list)=(0, 0, 0, 0, 0, 0); my ($index, $pictures, $findget, $findpost, $format, $archive)=(0, 0, 0, 0, 0, 0); my ($year, $help, $form, $multi, $robot, $notthere)=(0, 0, 0, 0, 0, 0); my @field; my $set; while( ){ # remove newline chomp( $_ ); # if in a session if( $_ ne "" ){ $total++; @field=split; if( $field[8]=~/2\d\d/ || $field[8]=~/3\d\d/ ){ $set=0; if( $field[6]=~/\d{7}/ ){ if( $field[6]=~/html/ || $field[6]=~/ps/ || $field[6]=~/pdf/ || $field[6]=~/e-print/ || $field[6]=~/ftp/ || $field[6]=~/dvi/ ){ $dloads++; $set=1; } else { if( $field[6]=~/abs/ ){ if( $set eq "1" ){ print"@field[6]\n" } $set=1; $abs++; } if( $field[6]=~/format/ ){ if( $set eq "1" ){ print"@field[6]\n" } $set=1; $format++; } } } if( $field[6]=~/\/new/ && !($field[6]=~/archive/) ){ if( $set eq "1" ){ print"@field[6]\n" } $set=1; $new++; } if( $field[6]=~/\/recent/ ){ if( $set eq "1" ){ print"@field[6]\n" } $set=1; $recent++; } if( $field[6]=~/\/list/ && !($field[6]=~/recent/) && !($field[6]=~/new/) && !($field[6]=~/help/) && !($field[6]=~/find/) ){ if( $set eq "1" ){ print"@field[6]\n" } $set=1; $list++; } if( $field[6] eq "/" ){ if( $set eq "1" ){ print"@field[6]\n" } $set=1; $index++; } if( $field[6]=~/.gif/ ){ if( $set eq "1" ){ print"@field[6]\n" } $set=1; $pictures++; } if( $field[6]=~/\/find/ && !($field[6]=~/help/) ){ if( $field[5]=~/GET/ ){ if( $set eq "1" ){ print"@field[6]\n" } $set=1; $findget++; } else { if( $set eq "1" ){ print"@field[6]\n" } $set=1; $findpost++; } } if( $field[6]=~/\/archive/ && !($field[6]=~/help/) ){ if( $set eq "1" ){ print"@field[6]\n" } $set=1; $archive++; } if( $field[6]=~/\/year/ && !($field[6]=~/find/) ){ if( $set eq "1" ){ print"@field[6]\n" } $set=1; $year++; } if( $field[6]=~/\/help/ && !($field[6]=~/.gif/) ){ if( $set eq "1" ){ print"@field[6]\n" } $set=1; $help++; } if( $field[6]=~/\/form/ && !($field[6]=~/format/) ){ if( $set eq "1" ){ print"@field[6]\n" } $set=1; $form++; } if( $field[6]=~/\/multi/ && $field[5]=~/POST/ ){ if( $set eq "1" ){ print"@field[6]\n" } $set=1; $multi++; } if( $field[6]=~/robot/ || $field[6]=~/Robot/ ){ if( $set eq "1" ){ print"@field[6]\n" } $set=1; $robot++; } } if( $field[8]=~/404/ ){ $notthere++; } } } print("Total $total\n"); print("Paper Downloads $dloads ", ($dloads/$total)*100, "\n"); print("Abstract Downloads $abs ", ($abs/$total)*100, "\n"); print("Browsing New $new ", ($new/$total)*100, "\n"); print("Browsing Recent $recent ", ($recent/$total)*100, "\n"); print("Browsing Listings $list ", ($list/$total)*100, "\n"); print("Index Accesses $index ", ($index/$total)*100, "\n"); print("Picture Downloads $pictures ", ($pictures/$total)*100, "\n"); print("Find GET $findget ", ($findget/$total)*100, "\n"); print("Find POST $findpost ", ($findpost/$total)*100, "\n"); print("Formater downloads $format ", ($format/$total)*100, "\n"); print("Browsing Archive $archive ", ($archive/$total)*100, "\n"); print("Browsing Year $year ", ($year/$total)*100, "\n"); print("Browsing Help $help ", ($help/$total)*100, "\n"); print("Multifind Form $form ", ($form/$total)*100, "\n"); print("Multifind POST $multi ", ($multi/$total)*100, "\n"); print("Robots.txt Accesses $robot ", ($robot/$total)*100, "\n"); print("404 Errors $notthere ", ($notthere/$total)*100, "\n"); my $other=($dloads+$abs+$new+$recent+$list+$index+$pictures+$findget+$findpost+$format); $other+=($archive+$year+$help+$form+$multi+$robot); $other=$total-$other; print("Other $other ", ($other/$total)*100, "\n");