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/


Reply via email to