Le module Net::IP::Match permet de comparer une IP à un
réseau. En fait, ce module n'est pas à proprement parler du code
Perl, c'est une macro qui va transformer votre code en quelque chose qui
fait ce que vous voulez.
use Net::IP::Match;
if( __MATCH_IP ( $ip , '10.0.0.0/24' )) {
print "OK\n";
}
else {
print "NOK\n";
}
Dans l'exemple donné, on compare une IP passée en argument à un réseau codé en dur dans le code. L'inconvénient du fonctionnement en mode macro de ce module est son manque de souplesse : le est donné en dur dans le code, ca ne peut pas etre une variable.
L'avantage est le niveau de performance très élevé.
Le module Net::IP est plus complêt et fonctionne selon un mode
objet ou la comparaison ou l'obtention d'information sur un IP ou un
réseau passe par des fonctions appliquées sur l'objet. Plus
Un autre module Tie::NetAddr::IP offre une approche très
originale et fort simple.
use Tie::NetAddr::IP;
my %network;
tie(%network,'Tie::NetAddr::IP');
$network{'10.0.0.0/24'} = "Local Network";
$network{'192.168.0.0/24'} = "Office Network";
print $network{'10.0.0.11'}. "\n";
print $network{'192.168.0.32'} ."\n";