next up previous contents
suivant: Lancer des commandes en monter: Perl et le réseau précédent: Réaliser un serveur TCP   Table des matières

Comparer des IPs à un réseau

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



2006-03-15