From ba46c304bdffdce0b6019a47f6759ce6abbeef90 Mon Sep 17 00:00:00 2001 From: Stefan Ritter Date: Tue, 16 Aug 2011 10:51:41 +0200 Subject: Initial commit --- lastspoke.pl | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 lastspoke.pl (limited to 'lastspoke.pl') diff --git a/lastspoke.pl b/lastspoke.pl new file mode 100644 index 0000000..9ccf5d9 --- /dev/null +++ b/lastspoke.pl @@ -0,0 +1,52 @@ +#!/usr/bin/perl + +use File::ReadBackwards; + +if ($#ARGV ne 3){ + print "not enough arguments\n"; + exit 1; +} + +my $folder=$ARGV[0]; +my $chan=$ARGV[1]; +my $nick=$ARGV[2]; +my $printdate=$ARGV[3]; + +my @files; + +push @files, `ls $folder/$chan.* | sort -r`; + +foreach $file (@files) { + + +my $date=0; +my $lastaction; +my $line; + +$file=~s/\n$//; +my $log = File::ReadBackwards->new($file) || die $!; + +while ($line=$log->readline()){ +# $line=$log->readline(); + if ($date eq 0){ + if ($line =~ m/^\[[0-9]{2}:[0-9]{2}(:[0-9]{2})?\] <$nick> /i && $line !~ m/joined #/ ) { + $date=1; + ($lastaction=$line)=~s/\n//; + } + } else { + if ($printdate eq 0){ + print "$nick\'s last action: $lastaction\n"; + exit 0; + } else { + if ($line=~m/^\[00:00(:00)?\] --- /){ + ($date=$line)=~s/^\[00:00(:00)?\] --- (.*)\n/$2/; + print "$nick spoke last time on $date\n"; + print "$nick\'s last action: $lastaction\n"; + exit 0; + } + } + } +} +} + +print "I do not remember $nick\n"; -- cgit v1.2.3