• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 182
  • Last Modified:

creating a hash

I have a file containing IP addresses. I want to read a file, and make a hash with IPs being the keys and the number of times that IP appears in the file as the value. So a file like this:


0.0.0.0
1.2.3.4
0.0.0.0
4.5.6.7
0.0.0.0
1.2.3.4

would create a hash like this:

%ips = (

0.0.0.0 => 1,
1.2.3.4 => 2,
4.5.6.7 => 3,

);

What I really need this for is counting IP accesses in a log file. I'll parse the log file, and:

1. if the IP is not already in the hash, add a key/value pair of <IP>=>"1".

2. if the IP is already in the hash, increment the value.

(how is this done?)

-Mike K.
0
lunaboy
Asked:
lunaboy
1 Solution
 
Kim RyanIT ConsultantCommented:
open(FH,"<ip_access.txt");
while (<FH>)
{
   chomp($_);
   $current_ip = $_;
   # increment occurence count, stored as value
   $ips{$current_ip}++;
}
close(FH);

foreach $ip (sort keys %ips)
{
   print("$ip was hit $ips{$ip} times\n");
}
0

Featured Post

2018 Annual Membership Survey

Here at Experts Exchange, we strive to give members the best experience. Help us improve the site by taking this survey today! (Bonus: Be entered to win a great tech prize for participating!)

Tackle projects and never again get stuck behind a technical roadblock.
Join Now