Hi,
I am using Data::Dumper to store log contents into two hashes ( %users and %searches ). I have connection number as common string between two hashes. I would like to perform a search on %Searches, get the connection number, and perform a lookup on %users hash value, if matched, count the total # of connections, if connection # greater than 3, print "bad user" statement.
Please note :
1. Connection # are unique.
2. Ideally connection # within %Users should be present, if connection # not found, no action required.
Could somone suggest on the last section, as it is not working? Also, if there is a better way to do it, please suggest.
Here is the code :
#!/usr/bin/perl
use warnings;
use strict;
open(IN, "logs.txt") or die "can not open file";
my %users;
my %searches;
my %counts = ();
my $conn;
my $conn1;
my $uid;
my %num;
use Data::Dumper;
while (<IN>){
if (/BIND/){
($conn) = /conn=(\d+)\s/;
($uid) = /uid=(.*?),/;
push @{$users{$uid}}, $conn;
}
if (/SRCH=Q/){
($conn1) = /conn=(\d+)\s/;
my (@line) = split(" ",$_);
my $timestamp = "$line[0]\n";
push @{$searches{$conn1}}, $timestamp;
}
}
my $count = @{$users{$uid}}; # get the size of the array (all elemen
+ts)
if (defined $users{$conn1}) # search to check existing of conn to uid.
{
print $count;
if ($count > 0)
{
print exist;
print "bad users"; ## user group add command.
}
}
##