#!/usr/bin/perl use warnings; use strict; my $LOGDIR = '/hlds/cstrike/logs'; my $USERS = '/hlds/cstrike/addons/adminmod/config/users.ini'; my $search = qr/\bconnected, address\b/; my @users = do { open my $U, $USERS or die "cannot open $USERS:$!"; local $/; <$U> =~ /^[^:]+/mg; }; print "search:@users\n"; my $user_pattern = qr/\b(@{[ join '|', map "\Q$_", reverse sort @users ]})\b/; my %R; @ARGV = <$LOGDIR/*.log>; while ( <> ) { next unless / (\d\d)\D+(\d\d)\D+(\d{4})\D+(\d\d)\D+(\d\d)\D+(\d\d): .+? $user_pattern .+? $search /x; @{ $R{ $7 } }{ qw/date line/ } = ( "$3$1$2$4$5$6", $_ ) if not exists $R{ $7 }{ date } or $R{ $7 }{ date } lt "$3$1$2$4$5$6"; } print "--------------------------\n", sort map $_->{ line }, values %R; __END__
In reply to Re: A pretty simple perl script..
by Anonymous Monk
in thread A pretty simple perl script..
by xnd
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |