diff options
author | Stefan Ritter <xeno@thehappy.de> | 2011-08-16 10:51:41 +0200 |
---|---|---|
committer | Stefan Ritter <xeno@thehappy.de> | 2011-08-16 10:51:41 +0200 |
commit | ba46c304bdffdce0b6019a47f6759ce6abbeef90 (patch) | |
tree | 40a5b204637cb65c5bb91bd4f26a248ea498e019 /lastspoke.pl |
Initial commit
Diffstat (limited to 'lastspoke.pl')
-rw-r--r-- | lastspoke.pl | 52 |
1 files changed, 52 insertions, 0 deletions
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"; |