Bonjours a tous.
Me revoila aprés des lectures des faq et cours sur les exprssions réguliére.
J'ai toujours un fichier dns que je filtre avec la portion de code suivant :
J'obtient des lignes comme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 while($lines = <FICH>){ #si la ligne est du type : '<;*** - 2 ou + espaces - chaîne de caractére - 1 ou + espaces - chaines de caractére> if($lines =~ /;\*\*\*\s{2,}(.+)\s+(.+)/) { $adresse=$1; $nom=$2; #on retire les espaces et les ;*** print(FICHOUT "$adresse $nom\n"); $i++; }
172.18.1.x reseau federateur enseignement
172.18.42.0 Gestion
172.19.3.0 reserve DHCP pour vpn
Je voudrais mettre en page ce fichier pour pouvoir rentrer plus facilement les informations dans une bdd , par exemple obtenir une mise en page comme :
172.18.1.x;reseau federateur enseignement
172.18.42.0;Gestion
172.19.3.0;reserve DHCP pour vpn
Je ne sait pas si je doit traiter cette mise en page aprés le print ou dans une autre boucle ?
Mais aussi savoir si je doit regénérer un autre fichier résultat ou puis-je travailler en lecture et ecriture dans le même fichier ? ?
Aussi j'aimerais savoir comment coder :
si la ligne est : adresse --1 ou + espace -- nom la remplacer par adresse ;espace -- nom
j'ai réalisé le code suivant:
Mais cela n'affecte pas la mise en page de mon fichier si je place ce code a la suite de le première boucle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 while($lines2 = <FICHOUT>){ #si la ligne est du type : adresse --1 ou + espace -- nom if($lines2 =~ /(.+)\s{1,}(.+)/) { $lines =~ s/(.+)\s{1,}(.+)/(.+);(.+)/g; } }
Merci de votre aide
Partager