Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??

I like to try to find some trigger that I can consider to be a record separator, and then use $/ accordingly. Here's an example wherein we use Traceroute: as the record separator. That means that the first record will be empty, since technically it shows up at the beginning of a record rather than at the end. After discarding the record separator, we can check to see if the rest of the record is empty (it will be in the case of the first time Traceroute: is seen, since nothing precedes it).

Next, in this example, we find another anchor and use it to locate the IP address that we're trying to reach. Capture that. Then count how many times a number appears at the beginning of a line (preceded by an optional space). Keep track of that count. The Lingua::EN::Inflect stuff is just for fun.

use Lingua::EN::Inflect qw( PL ); { local $/ = 'Traceroute'; while( my $line = <DATA> ) { chomp $line; next unless length $line; my ( $destination ) = $line =~ m/\(([^)]+)\)/; my $count = () = $line =~ m/^\s*(\d+)\s{2}/mg; print "$destination: $count ", PL( "hop", $count ), ".\n"; } } __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

The output:

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

Dave


In reply to Re: Can I count lines in a substring? by davido
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":



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chanting in the Monastery: (2)
As of 2024-04-26 01:27 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found