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 :

[langage] [PERL]faire appel à une fonction dans s/../../g


Sujet :

Langage Perl

  1. #1
    Membre expérimenté
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Points : 1 680
    Points
    1 680
    Par défaut [langage] [PERL]faire appel à une fonction dans s/../../g
    bonjour,
    j'ai une expression rationnelle qui me trouve des valeurs sur une ligne. A partir de ces valeur je dois en caculer une autre et remplacer la valeur initiale. J'aurais donc eu besoin de pouvoir modifier les variables $1, $2, $n du résultat de la recher sur l'expression rationnelle à aprtir d'une fonction.voici ce que j'ai essayé et que j'aimerais pouvoir faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ligne =~ s/$expr/$1=calcul($1)/g;
    Comment puis-je faire quelque chose s'y rapprochant ?

    merci

  2. #2
    Membre actif
    Avatar de bobuse
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 232
    Points : 278
    Points
    278
    Par défaut
    T'es sûr de pas vouloir le faire en awk

    Non, bon en fait, c'est faisable en perl, mais je sais pas comment ...

  3. #3
    Membre expérimenté
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Points : 1 680
    Points
    1 680
    Par défaut
    si c'est plus facile en awk ok je prend

  4. #4
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut
    C'est peut être ballot (dans son berçeau,.... comme un taureau ...) mais pourquoi pas décomposer ton problème en Perl :
    1) Tu récupères dans ton regexp la valeur souhaité dans une variable scalaire.
    2) Dans une autre variable, tu fais ton traitement.
    3) Tu modifies la ligne en cours par ta nouvelle valeur.
    A moins que je ne me trompe, je n'ai jamais vu de calcul dans une regexp. Donc, le mieux est de décomposer.

    @++

    GLDavid,initié à la chanson paillarde
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  5. #5
    Membre expérimenté
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Points : 1 680
    Points
    1 680
    Par défaut
    merci mais j'ai trouvé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	while (\$ligne = <IN>){
    		\$_ = \$ligne;
     
    		s{(\$expNoIdent)}{
    			getValue(\$1)
    		}ige;
     
    		print STDOUT \$_;
    	}
    c'est trop cool perl

    [EDIT]
    au passage je met ma source d'info : http://www.perl.com/pub/q/documentation
    http://search.cpan.org/~nwclark/perl-5.8.6/pod/perlfaq4.pod#How_can_I_access_or_change_N_characters_of_a_string?

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

Discussions similaires

  1. [VB6] Appel d'une fonction dans un module d'une dll
    Par speedster dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 05/06/2006, 17h37
  2. PHP4 appel d'une fonction dans une autre
    Par cmicdev dans le forum Langage
    Réponses: 6
    Dernier message: 18/05/2006, 11h37
  3. Réponses: 7
    Dernier message: 12/03/2006, 21h18
  4. Réponses: 6
    Dernier message: 16/11/2005, 20h43
  5. Appel d'une fonction dans uns boucle d'un tableau
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/02/2005, 15h37

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