Of course, the old fashion hash is always here to help
use warnings;
use strict;
my $router_route = {}; ## an hash ref
my $name = "";
while (<DATA>) {
s{^\s+|\s+$}{}; # remove the first and trailing spaces
if (/^traceroute to.+?\((.+?)\).+?$/s) {
$name = $1;
}
++$router_route->{$name} if /^\d/;
}
print "ROUTE\t\t\tNUMBER OF HOPS\n";
my $grand_total_hops = 0;
foreach my $route ( keys %{$router_route} ) {
$grand_total_hops += $router_route->{$route};
printf "%s\t\t%s\n", $route, $router_route->{$route};
}
print "\nTOTAL HOPS\t\t", $grand_total_hops, $/;
__DATA__
Traceroute: 11 1291796822 1291796821 1291796821 OpenDNS 0.chstatic.cvc
+dn.com 216.137.61.109
traceroute to 216.137.61.109 (216.137.61.109), 30 hops max, 60 byte pa
+ckets
1 192.168.178.1 0.638 ms 7.361 ms 7.366 ms
2 82.135.16.28 44.925 ms 46.633 ms 50.457 ms
3 212.18.7.121 98.010 ms 98.307 ms 98.650 ms
4 212.18.6.97 68.374 ms 72.222 ms 76.184 ms
5 62.140.24.49 129.246 ms 130.224 ms 130.221 ms
6 4.69.134.2 98.205 ms 105.207 ms 102.287 ms
7 4.69.140.10 106.816 ms 82.609 ms 4.69.140.2 88.631 ms
8 4.68.23.76 79.559 ms 65.093 ms 4.68.23.204 64.530 ms
9 212.162.24.70 65.476 ms 50.797 ms 55.108 ms
10 216.137.61.109 58.221 ms 62.351 ms 59.094 ms
Query: 18 1291796822 GoogleDNS 0.chstatic.cvcdn.com 1 True 0.155671834
+946 0.0507638454437
Traceroute: 2 1291796823 1291796822 1291796822 LocalDNS LocalDNS 192.1
+68.178.1
traceroute to 192.168.178.1 (192.168.178.1), 30 hops max, 60 byte pack
+ets
1 192.168.178.1 0.649 ms 1.033 ms 1.013 ms
Query: 13 1291796823 LocalDNS 0.media.collegehumor.com 1 True 0.193642
+139435 0.0472960472107
Traceroute: 9 1291796827 1291796822 1291796822 GoogleDNS GoogleDNS 8.8
+.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1 192.168.178.1 0.464 ms * *
2 82.135.16.28 68.613 ms 72.079 ms 76.268 ms
3 212.18.7.101 160.966 ms 163.495 ms 163.517 ms
4 93.104.240.53 99.638 ms 103.396 ms 108.241 ms
5 209.85.241.110 111.919 ms 209.85.240.64 114.900 ms 209.85.241.11
+0 119.654 ms
6 209.85.254.116 124.134 ms 209.85.254.118 127.998 ms 209.85.254.1
+12 111.621 ms
7 209.85.249.166 116.258 ms 209.85.254.126 115.774 ms 209.85.254.1
+34 105.670 ms
8 8.8.8.8 95.428 ms 95.573 ms 95.923 ms
Query: 10 1291796827 OpenDNS 1.im.cz 1 True 0.0573320388794 0.05522108
+078
OUTPUT
ROUTE NUMBER OF HOPS
216.137.61.109 10
8.8.8.8 8
192.168.178.1 1
TOTAL HOPS 19