substituer une chaine par une autre

substituer une chaine par une autre - Perl - Programmation

Marsh Posté le 15-03-2005 à 16:14:29    

salut à tous, je débute en perl,
je veux faire un prog qui lit et modifie à la volée un fichier
 
ex, j'ai le fichier suivant:  

Code :
  1. <map version="0.7.1">
  2. <node TEXT="root">
  3. <node TEXT="droite" POSITION="left">
  4. <node LINK="bas.mm" TEXT="lien"/>
  5. </node>
  6. <node COLOR="#ff3333" TEXT="gauche2" POSITION="right">
  7. <edge COLOR="#d4d0c8"/>
  8. <node TEXT="gauche2.1">
  9. <edge COLOR="#d4d0c8"/>
  10. <node LINK="bas.mm" TEXT="lien"/>
  11. <node TEXT="gauche2.1.1"/>
  12. </node>
  13. </node>
  14. </node>
  15. </map>


 
 
et je voudrais par ex remplacer tous les mot TEXT par texte.
j'ai fais le pgr suivant:

Code :
  1. #!/usr/bin/perl
  2. $fichier = "aaa.mm";
  3. open(FILE,"+<$fichier" ) || die("Erreur de lecture de $fichier, Erreur: $!\n" );
  4. #print("Quel mot rechercher : " );
  5. $cherche = $ARGV[0];
  6. $ligne = 0;
  7. $sum = 0;
  8. $cond = 0;
  9. while(<FILE> ){
  10.     $cond=$sum;
  11.     $ligne +=1;
  12.        $sum += (s/$cherche/$cherche/g);
  13.     if($cond != $sum){
  14.         print("Ligne $ligne ==> " );
  15.         print("$sum\n" );
  16.     }
  17. }
  18. close(FILE);
  19. print("----------------------------------------------------\n" );
  20. print("Votre fichier contient $sum fois le mot '$cherche'\n" );


il me permet de détecter et non de substituer, et je vois pas trop comment faire.
 
si quelqu'un a une idée
 
merci bcp

Reply

Marsh Posté le 15-03-2005 à 16:14:29   

Reply

Marsh Posté le 15-03-2005 à 16:31:30    

edit ====> j'avais mal lu le code
 
si tu veux substituer utilises l'opérateur "=~ s/blabla/blabla/"
sinon si tu fais juste un "= s/blabla/blabla" il te retournera 1 chaque fois qu'il aura réussit à substituer


Message édité par couak le 15-03-2005 à 16:42:28
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed