Your question is about the data representation of the network topology. The CPAN Graph::Base module defines methods for representing networks efficiently. Given one of your @ip_addrs arrays,

use Graph; my $G = Graph->new(); # Create Graph object with listed verteces # Obtain a route in @ip_addrs, then: add_chain $G, @ip_addrs; # lather, rinse, and repeat sub add_chain { my $g = shift; # add_edge produces any vertices not already present $g->add_edge($_[$_-1],$_[$_]) for 1..scalar(@_)-1; }

There are many advantages to this. Graph takes care of nasties like cyclic graphs, which would give you trouble in a hand-rolled representation. It has methods like neighbors($vertex), successors($vertex), predecessors($vertex), and many more ('man Graph::Base'). Edges can be weighted by, say, bandwidth to provide support for network traffic analysis.

Hope this helps.

Update: Graph::Base is under the hood of the Graph module. I cited Graph::Base rather than Graph because cpan search on 'Graph' turns up lots of irrelevancies. Here's a link to the tarball, or (with CPAN.pm):
$ perl -MCPAN -e 'shell'
cpan> install Graph
Re: Masem's response, mr_linux wants to scan a 192.168.x/23 network, about 29 IP's. That net may be sparse enough for a simple homegrown representation, but I like the painlessness and power of the Graph module.

After Compline,
Zaxo


In reply to Re: Network topology mapping by Zaxo
in thread Network topology mapping by mr_linux

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.