IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

problème de remplacement


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 24
    Points : 20
    Points
    20
    Par défaut problème de remplacement
    Salut à tous,
    Bon c'est pas le premier message que je met et que je doit bassiner tout le monde avec mes soucis perl xml.
    Mais là j'ai un problème de regex.

    J'ai ceci en exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    #!/usr/bin/perl -w
     
    use Data::Dumper;
    use XML::XPath;
     
    my $xml = new XML::XPath->new('test.xml');
     
    #balise recherchée
    my $rech = $xml->find("//title");
     
    my @words;my @res;
     
    if(my @nodes = $rech->get_nodelist){
    	@words = map($_->string_value, @nodes);
    }
     
    for(my $i=0;$i<2;$i++){
    	print "balise $i : $words[$i] \n";
    	if("$words[$i]" eq "Harry Potter"){
    		my $file = $words[$i];
     
    		print "ici file : $file\n ";
     
    		my $newfile = 'Harry Torpeur';
     
    		print "ici newfile : $newfile\n";
     
    		$ligne =~s/$file/$newfile/g;
     
    		print "c passé en douceur  lol \n";
    	}
    }
    print "stop \n";
    et j'ai ma regex qui ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ligne =~s/$file/$newfile/g;
    J'ai beaucoup de mal avec perl et la manipulation xml, c'est la première activité que je fait dans ce langage.
    Qu'est ce qui ne va pas?
    Merci beaucoup de vos réponses futures.

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Tu appliques ta regex à $ligne, mais j'ai beau cherché, c'est le seul endroit dans ton script où $ligne apparaît... Il y a donc comme un petit problème, non ?

    Par ailleurs tu devrais utiliser le pragma "strict", consulte notre FAQ sur comment écrire du code Perl propre.

    --
    Jedaï

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 24
    Points : 20
    Points
    20
    Par défaut
    oui oui $ligne n'apparaît que là je le sait, j'ai pas besoin de l'afficher car quand je veux déjà lancer ça, cela ne marche pas il me marque un message d'erreur.
    Mais ça va j'ai réussi à faire le changement ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $words[$i] =~ s/$file/$newfile/;;
    print 'voici le résultat : '.$words[$i];
    Maintenant il me reste à enregistrer ce changement dans le fichier XML. Et là..
    jocker

    j'ai vu un XML simple, mais je ne sais pas j'aime pas car j'ai pas vu grand chose de "simple" avec ça.

  4. #4
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    XML::Twig devrait faire ça en quelques lignes, je t'encourage fortement à consulter son didacticiel.

    --
    Jedaï

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 24
    Points : 20
    Points
    20
    Par défaut
    merci beaucoup...
    je vais voir ca et si je n'y arrive pas.. bah.. heu.. j'repasserais faire un tour ^^

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 24
    Points : 20
    Points
    20
    Par défaut
    Yessss j'ai réussi à récupérer le bon noeud XML, je réussi à en créé un avec une valeur à l'intérieur, mais je n'arrive pas à changer un noeud existant, es ce qu'il existerait quelque chose avec XML::Twig:Elt qui permettrait de remplacer une valeur, ou de rechercher un élément précis?

  7. #7
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Si tu cherches dans les exemples du didacticiel, tu verras que tu as la fonction set_text() pour changer le contenu d'un élément, par ailleurs quand tu crées un élément le second argument du constructeur est le contenu de l'élément.
    Pour chercher un élément précis, tu peux utiliser du XPath dans les handlers, voir section 4.7 du didacticiel.

    --
    Jedaï

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 24
    Points : 20
    Points
    20
    Par défaut
    merci beaucoup!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [replaceregexp] Problème de remplacement
    Par Gauden dans le forum ANT
    Réponses: 2
    Dernier message: 27/03/2007, 13h22
  2. [RegEx] problème de remplacement à répétition
    Par mainge dans le forum Langage
    Réponses: 5
    Dernier message: 31/10/2006, 19h27
  3. [Perl] Problème de remplacement de chaine de caractères
    Par LE NEINDRE dans le forum Langage
    Réponses: 3
    Dernier message: 17/10/2006, 09h28
  4. [Tableaux] Problème avec remplacement dans chaîne
    Par Baptiste Wicht dans le forum Langage
    Réponses: 5
    Dernier message: 13/07/2006, 10h04
  5. [VB6]Problème de remplacement dans ma MaskedBox
    Par bb62 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 02/03/2006, 10h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo