#!/usr/bin/perl use strict; use Socket; unlink for ; my %prefixes; while( <> ) { while( /((\d+)\.\d+\.\d+\.\d+)/g ) { open my $f, '>>', "/tmp/prefix.$2.ips"; $prefixes{$2}++; print $f inet_aton($1), "\n" } } for ( sort {$a <=> $b} keys %prefixes ) { my %addresses; open my $f, '<', "/tmp/prefix.$_.ips"; while( <$f> ) { chomp; $addresses{$_}++ } printf "%-20.20s => %d\n", inet_ntoa($_), $addresses{$_} for sort {$a <=> $b} keys %addresses } unlink "/tmp/prefix.$_.ips" for keys %prefixes __END__ 64.233.169.17 => 1 64.233.169.18 => 1 75.101.152.211 => 2 85.17.189.130 => 4 127.0.0.1 => 8 174.129.112.136 => 1 174.129.233.130 => 1 #### while( /((\d+)\.\d+\.\d+\.\d+)/g ) { #### while( /((\d+\.\d+)\.\d+\.\d+)/g ) {