#!/usr/local/bin/perl #$Id: italkproductivity.pl,v 1.1 1999/10/20 03:53:02 itogawa Exp itogawa $ #Todo: handle change¤Ø¤ÎÂбþ use Time::Local; foreach $file (@ARGV) { open IN, ("nkf -e $file|"); while () { if (/^\(\[(.*?)(?:@|¡÷).*\] logged (...?) @ \d{4}-\d\d-\d\d\(...\) (\d\d):(\d\d):(\d\d) (...)\)/) { $monkey = $1; $monkey =~ s/@[^@]*$//; $monkey =~ s/\?\?\?//; if ($2 eq "in") { $loggingin{$monkey}++; $enteringtime{$monkey}{$loggingin{$monkey}} = $3*3600 + $4*60 + $5; } elsif ($2 eq "out") { if ($loggingin{$monkey} > 0) { $time{$monkey} += ($3*3600 + $4*60 + $5 - $enteringtime{$monkey}{$loggingin{$monkey}}); $loggingin{$monkey}--; } else { $time{$monkey} += $3*3600 + $4*60 + $5; } } } elsif (/^\(\d\d:\d\d:\d\d\)\[([^]].*)\] (.*)/) { $monkey = $1; $monkey =~ s/(@|¡÷).*//; $chatty{$monkey} += length($2); } } foreach (keys %loggingin) { while($loggingin{$_}) { $time{$_} += (86400 - $enteringtime{$_}{$loggingin{$_}--}); } } close IN; $day++; } foreach (keys %time) { $speed{$_} = 60*$chatty{$_}/$time{$_}; #bytes/minute } print "bytes/min. time bytes handle\n"; print "---------------------------------------\n"; foreach (sort {$speed{$b} <=> $speed{$a}} keys %speed) { $second = $time{$_}%60; $minute = $time{$_}/60; $hour = $minute/60; $minute %= 60; printf "%6.2f %3d:%02d:%02d %5d %-16s\n", $speed{$_}, $hour, $minute, $second, $chatty{$_}, $_; }