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 :
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++;
	}
J'obtient des lignes comme :
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:
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; 
	}
 
}
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.

Merci de votre aide