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; }