On Mon, Nov 24, 2008 at 11:47, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > Suppose I have C_IP address : 12.120.29.25 > > > and I have list of following IP addresses : > > 212.120.128.0|19; > 12.120.0.0|15; > 12.120.16.0|20; > 12.120.72.0|22; > 12.120.96.0|20; > 12.120.40.0|21; > 12.120.0.0|21; > 12.120.192.0|19; > 12.120.16.0|22; > 12.120.36.0|22; > 12.120.80.0|20; > 194.212.120.0|21; > 212.120.32.0|19; > 212.120.64.0|18; > 212.120.192.0|19; > 213.3.12.120|29; > 116.212.120.0|24; > 12.120.24.0|21; > > > Now I need to map C_IP to list with longest prefix match. (As u can > there are many IP address with 12.120. but I need to map to one with > longest prefix match)
The algorithm/data structure you are looking for is called a trie*. There are a few modules on CPAN that seem to implement tries for you: Data::Trie**, Tree::Trie***, Net::IPTrie****. Off hand, I would say Net::IPTrie looks like what you need. * http://en.wikipedia.org/wiki/Trie ** http://search.cpan.org/dist/data-trie/Trie.pm *** http://search.cpan.org/dist/Tree-Trie/Trie.pm **** http://search.cpan.org/dist/Net-IPTrie/lib/Net/IPTrie.pm -- Chas. Owens wonkden.net The most important skill a programmer can have is the ability to read. -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/