obn à chaud comme ca, et sans le résultat à l'écran c'est un peu dur à débugguer
mais qques conseils pratiques pour perl :
1) évite les commandes systèmes sauf si tu ne peux pas le faire en perl
pour ta lecture de fichier, il est généralement conseillé d'ouvrir un file descriptor et de le stocker dans une liste, ce qui te facilitera les manipulations après coup
Code :
- open FILE, "/etc/test.conf";
- @lines = <FILE>;
- close FILE;
- @ip_match = grep /pasv_address/, @lines;
|
avec ce bout de code, tu auras les lignes contenant "pasv_address" dans un tableau, tu pourrais également pousser plus loin le vice en ne prenant pas en compte les lignes commentées, et autre exceptions qui pourraient t'arriver
2) utilises des regex plutôt que des substr, ca rendra ton truc plus souple, parce que là je sais pas trop ce que tu as récupéré ; un exemple con :
Code :
- #pasv_address 192.168.1.1
|
sera récupérée par ta commande système grep, alors que c'est une ligne commentée
De plus, ton substring ne marchera pas à cause du # et des nombreux espaces entre le paramètre et sa valeur
sinon pour ton problème, tu utilises le bon opérateur ("ne" ) même si la condition est redondante => voici 3 lignes équivalentes :
Code :
- if (($file_ip ne $ip)==1) { ... }
- if ($file_ip ne $ip) { ... }
- unless ($file_ip eq $ip) { ... }
|
perso je préfère la dernière ligne, mais bon chacun ses goûts et sa manière de travailler
donc ton problème est peut-être dans les chaînes mêmes, peut-être as-tu un caractère pourri qui se balade (retour chariot, espace, ...)
essayes de débugguer, soit en faisant des affichage écrans plus visibles comme par exemple :
Code :
- print "xxxxx".$file_ip."xxxxx"
|
et là tu verras totu de suite si t'as un truc pourri qui se balade soit en utilisant le débuggeur perl (perl -d script.pl)
mais bon à priori ca a l'air bon, mais mon cerveau n'est pas un interpréteur perl avec je peux pas aller plus loin
Message édité par couak le 10-05-2007 à 00:47:43