Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Hash Value via Data::Dumper

by johnrein55 (Novice)
on Jun 12, 2013 at 11:47 UTC ( [id://1038442]=perlquestion: print w/replies, xml ) Need Help??

johnrein55 has asked for the wisdom of the Perl Monks concerning the following question:

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. } } ##

Replies are listed 'Best First'.
Re: Hash Value via Data::Dumper
by Anonymous Monk on Jun 12, 2013 at 11:51 UTC

    I am using Data::Dumper

    But you make no actual use of it

Re: Hash Value via Data::Dumper
by hdb (Monsignor) on Jun 12, 2013 at 11:58 UTC

    You need a loop over the users, I would think:

    for $uid (keys %users) { my $count = @{$users{$uid}}; # etc ... }
      Hi, I am beginner, however tried to come up with something. Could you please suggest on my existing code, or a better way of doing it? Thanks, John
      Any suggestion you've for
      if (defined $users{$conn1})

        As far as I can see you don't need that. You already have $count which is the number of connections for a given user, just print if it is larger than 3.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://1038442]
Approved by ww
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others pondering the Monastery: (4)
As of 2024-04-25 07:10 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found