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 :

printf: Ne pas interpreter ma chaine


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 4
    Par défaut printf: Ne pas interpreter ma chaine
    Bonjour,

    J'ai un script Perl qui fait un pre-processing sur du code C++. En gros, en entrée j'ai une ligne C++ et en sortie une ligne C++, éventuellement modifiée.

    Dans mon cas, lorsque j'ai lu en Perl "My value %d", que je met dans $MyLine, je fais un printf "$MyLine" pour ré-écrire cette ligne dans mon fichier de sortie. Je me retrouve dans mon nouveau fichier avec "My value 0". Le %d a été interprété. Comment empêcher cette interprétation ?

    Merci.

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Par défaut
    bonjour,
    essaye avec un backslash devant ton % pour l’inhiber

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 4
    Par défaut
    Je n'ai peut être pas été clair : la ligne que j'ai en entrée est dynamique, elle me vient du fichier source C++ que j'interprète ligne par ligne. Celà reviendrait à ajouter un '\' chaque fois que je rencontre un '%', mais ce n'est pas bon, par exemple si j'ai un '%' dans un commentaire.

    En fait il me faut le moyen d'écrire dans mon fichier de sortie ma variable $MyLine sans laisser Perl interpréter ce qu'il y a dedans.

  4. #4
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Peut-tu montrer le bout de script qui lit le fichier C++ et mettre en exemple la partie du fichier C++ qui pose problème.
    L'interprétation se fait sur un niveau seulement.
    Si tu lis et print tes lignes ainsi, il ne devrait pas y avoir sur-interprétation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach my $cplusplus_line (<CPLUSPLUS>) {
      printf $cplusplus;
    }
    Si je suis à coté de la plaque, il faudra fournir plus d'infos.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Août 2008
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Août 2008
    Messages : 505
    Par défaut
    SI tu peux écrire
    $myvar n'est pas interprété.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 4
    Par défaut
    Un exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    my $line = "test %d";
    printf $line;
    Va me sortir "test 0", au lieu de "test %d";

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    my $line = "test %d";
    printf '$line';
    Va me sortir "$line".

    Pour rappel, je ne peux pas doubler le %, ici ce n'est qu'un exemple, cette ligne provenant de la lecture ligne à ligne d'un fichier. Je ne peux pas non plus doubler systématiquement les '%', dans certains cas, je ne dois pas le faire. Il me faut donc "simplement" réécrire ma chaine $line comme je l'ai récupérée.

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

Discussions similaires

  1. [HTML] ne pas interpreter du code html
    Par LeXo dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 05/04/2007, 00h11
  2. Réponses: 7
    Dernier message: 17/01/2007, 11h23
  3. Ne PAS interpreter le php
    Par Syntax-ERROR dans le forum Langage
    Réponses: 10
    Dernier message: 04/12/2005, 19h45
  4. [Reflection] Interpreter une chaine en une methode java
    Par shaun_the_sheep dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 09/10/2004, 16h11
  5. [XSL][re] Ecrire des balise qui ne seront pas interpretées
    Par FrRoulio dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 17/03/2004, 13h32

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