#!/usr/bin/perl use File::ReadBackwards; if ($#ARGV ne 2){ print "not enough arguments\n"; exit 1; } my $file=$ARGV[0]; my $nick=$ARGV[1]; my $printdate=$ARGV[2]; my $date=0; my $lastaction; my $line; 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}\] <$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\] --- /){ ($date=$line)=~s/^.{12}(.*)\n/$1/; print "$nick spoke last time on $date\n"; print "$nick\'s last action: $lastaction\n"; exit 0; } } } } print "I didn't remember $nick\n";