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 :

chiffre après référence arrière


Sujet :

Langage Perl

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 9
    Points : 7
    Points
    7
    Par défaut chiffre après référence arrière
    Bonjour.
    J'ai besoin d'ajouter un zéro après une référence arrière dans une chaîne de remplacement, comme ceci :
    le but est, si par exemple je donne en entrée la chaîne "abcde", d'obtenir "ab0".
    Mais j'ai le message d'erreur suivant:
    "Use of uninitialized value in substitution iterator at test.pl line 5"
    Si je mets une lettre à la place du zéro, tout marche bien, par exemple:
    Ceci me donne bien "abZ", mais par contre avec un zéro il semble que Perl croie que je cherche la parenthèse n° 10 et non la n° 1.
    J'ai essayé de délimiter mon $1 par des parenthèses, des accolades, mais c'est pas ça.
    Quelqu'un saurait quoi faire s'il vous plaît ?

  2. #2
    Membre éprouvé Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Points : 1 050
    Points
    1 050
    Par défaut
    cette écriture marche pour moi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $str =~ s/(.{2}).*/${1}0/;
    print $str;
    trouvée

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Ça marche ! J'avais testé {$1}, mais pas ${1}.
    Merci beaucoup !

  4. #4
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    C'est une façon plus générale d'isoler le nom d'une variable de la suite d'une chaîne de caractères. Par ex:

    permet de savoir que la variable s'appelle $toto et qu'il faut lui ajouter le mot titi (sans espace), et qu'elle ne s'appelle pas $tototiti.

  5. #5
    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 : 58
    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
    Points : 5 753
    Points
    5 753
    Par défaut
    Pour ce qui concerne l'expression régulière demandée, une autre solution (uniquement valable à partir de perl 5.10) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $a = "abcde";
    $a =~ s/.{2}\K.*/0/;

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Intéressant, mais en fait dans mon vrai script j'ai besoin de plusieurs références arrières, utilisées à divers endroits dans le résultat. Or si j'ai bien compris le \K ne mémorise qu'une seule chaîne: tout ce qui est à sa gauche. De toute façon, chez moi ça fonctionne bien, mais la machine de production est en 5.8.8.
    D'ailleurs ça me fait penser que si je continue à faire des scripts, il faudra que je fasse gaffe à la compatibilité avec celle-ci.

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

Discussions similaires

  1. Commande pour afficher des chiffres apres la virgule
    Par manar dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 23/09/2004, 18h28
  2. Chiffres après la virgule figés
    Par bondjames dans le forum Bases de données
    Réponses: 6
    Dernier message: 10/03/2004, 23h09
  3. [MFC] Nombre de chiffres après la virgule
    Par karl3i dans le forum MFC
    Réponses: 3
    Dernier message: 27/01/2004, 13h04
  4. Nb de chiffres après la virgule ?
    Par Thcan dans le forum C
    Réponses: 10
    Dernier message: 17/09/2003, 21h49
  5. extraire 2 chiffres après virgule ?
    Par nerick dans le forum C
    Réponses: 2
    Dernier message: 13/12/2002, 17h10

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