in reply to Re^2: How to create a Tree::DAG_Node tree with sorted hash elements
in thread How to create a Tree::DAG_Node tree with sorted hash elements
Since you can ignore case 5, and it sounds like you're only interested in the case where some rules are possible subsets of others, then I think you can do it relatively easily. I think you could get away with sorting the list, like this:
$ cat 910595.pl #!/usr/bin/perl use strict; use warnings; use Net::IP; my @IPranges = map { new Net::IP($_) } <DATA>; @IPranges = sort { # We want largest range first ($b->size() <=> $a->size()) # use IP as next key || ($a->ip() cmp $b->ip()) } @IPranges; print join("\n", @IPranges), "\n"; __DATA__ 1.2.3.0/24 1.2.0.0/16 192.168.0.0/16 192.168.4.0/24 192.168.4.192/26 127.0.0.1/32 10.0.0.0/8 $ ./910595.pl 10/8 1.2/16 192.168/16 1.2.3/24 192.168.4/24 192.168.4.192/26 127.0.0.1/32
Then you can probably use the rest of your code as-is to find the related rules.
...roboticus
When your only tool is a hammer, all problems look like your thumb.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: How to create a Tree::DAG_Node tree with sorted hash elements
by benny_vroom (Initiate) on Jun 21, 2011 at 14:41 UTC | |
by roboticus (Chancellor) on Jun 21, 2011 at 16:12 UTC | |
by benny_vroom (Initiate) on Jun 21, 2011 at 16:50 UTC |