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 avec la fonction getoptions


Sujet :

Langage Perl

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2005
    Messages : 134
    Points : 74
    Points
    74
    Par défaut problème avec la fonction getoptions
    Bonjour,

    Je rencontre des problèmes avec la fonction getoptions:
    J'aimerais avoir une seule option qui prend 2 arguments et appelle une sub routine.
    Le problème est que la subroutine est appelé deux fois (une fois par argument).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    use Getopt::Long;
    sub test
    {
        print @_;
        print "\n";
    }
     
     
    GetOptions('test=s{2}' => sub{ test(@_) } );
    $./test.pl --test 2 3
    test2
    test3

    Comment faire pour que la subroutine ne soit appelé qu'une seule fois?

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    19 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 19 799
    Points : 499 036
    Points
    499 036
    Par défaut
    Que veux tu qu'il print ? Tu peux faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    my @Arguments;                                                                                                                                   
    GetOptions('test=s{2}' => \@Arguments );
    test(@Arguments);

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2005
    Messages : 134
    Points : 74
    Points
    74
    Par défaut
    Je veux juste que getoptions appelle la bonne subroutine (avec les bons parametres) lorsqu'il reçoit l'option voulue.
    Ici j'ai fait des print pour simplifier le code mais la subroutine sera plus complexe que ça.

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    19 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 19 799
    Points : 499 036
    Points
    499 036
    Par défaut
    bah je pense pas que tu puisses contourner le fait que la procédure ne soit appelée à chaque argument, je n'ai pas lu la doc du module, mais bon.
    Soit tu fais comme je t'ai dit ci-dessus. Ou bien ton script peut etre appelé ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GetOptions('test=s{2}' => sub{ test(@_) } );
    $./test.pl -test "2 3"

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2005
    Messages : 134
    Points : 74
    Points
    74
    Par défaut
    OK merci.

  6. #6
    Membre éclairé
    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
    Points : 712
    Points
    712
    Par défaut
    C'est la façon dont tu appelles ta fonction qui ne va pas. Quand tu fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    use Getopt::Long;
    sub test
    {
        print @_;
        print "\n";
    }
     
    GetOptions('test=s{2}' =>\@param);
    test(@param);
    tout rentre dans l'ordre.

Discussions similaires

  1. Problème avec une fonction date.
    Par kmayoyota dans le forum ASP
    Réponses: 8
    Dernier message: 09/09/2004, 13h33
  2. Problème avec la fonction findfirst ()
    Par Angelico dans le forum Windows
    Réponses: 3
    Dernier message: 05/08/2004, 21h40
  3. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 14h24
  4. Problème avec les fonctions
    Par jvachez dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/01/2004, 13h06
  5. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 10h04

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