Since each hop is counted, one option is to capture the "traceroute to" IP and its associated final hop count within each 'traceroute to ' record:

use Modern::Perl; use Lingua::EN::Inflect qw( PL ); { local $/ = 'traceroute to '; /([\d.]+).*?(\d+)[^\n]+\nQ/s and say "$1: $2 " . PL( 'hop', $2 ) for <DATA>; } __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:

216.137.61.109: 10 hops 192.168.178.1: 1 hop 8.8.8.8: 8 hops

Hope this helps!

ps Thank you, davido: I couldn't resist your use of Lingua::EN::Inflect


In reply to Re: Can I count lines in a substring? by Kenosis
in thread Can I count lines in a substring? by maheshkumar

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.