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

Modules Perl Discussion :

probeleme avec getopt


Sujet :

Modules Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    532
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 532
    Par défaut probeleme avec getopt
    salut,

    J'utilise getopt et je ne comprends pas une chose;
    getopt est censer me renvoyer une erreur si j'appel mon script sans le parametre que je lui est preciser;

    Voila mon code;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    use strict;
    use warnings;
    use Getopt::Long;
     
    my $name = 0;
     
     
    my $result = GetOptions(
        "name=s" => \$name   
     
    );
     
     
    if ( $result == 0 ) { exit 1; }
    si j'appel mon script comme ceci
    edit.pl -n toto

    il fonctionne et je n'ai pas d'erreur
    et si je l'appel comme ceci
    edit.pl
    edit.pl -n

    mon script fonctionne alors qu'en theorie il ne devrait pas tourner

    ???

    Merci.

  2. #2
    Membre émérite
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $ perl opt.pl -n toto
    # Fonctionne, car tu as donné un argument à --name
     
    $ perl opt.pl
    # Fonctionne, car --name n'est pas un argument obligatoire
     
    $ perl opt.pl -n
    # Ne fonctione pas car --name requiert un argument
    Est-ce que ça t'éclaircit?

  3. #3
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    532
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 532
    Par défaut
    je me suis inspiré de cela sur le site de cpan
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    use Getopt::Long;
      my $data   = "file.dat";
      my $length = 24;
      my $verbose;
      $result = GetOptions ("length=i" => \$length,    # numeric
                            "file=s"   => \$data,      # string
                            "verbose"  => \$verbose);  # flag
    comme j'avais compris file et length avaient obligatoirement besoin d'un argument ( car "=")
    et seulement verbose etait optionnel.
    ce que tu m explique c est que tous les parametre ici n'ont pas besoin d'argument alors ?
    comment les rendre obligatoire alors ?

  4. #4
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    532
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 532
    Par défaut
    j'ai lu ça ici
    Pour cela, Getopt::Long utilise une syntaxe très simple : les arguments optionnels ajoutent un : après le nom de l'option alors que les arguments obligatoires sont spécifiés par un =. Pour préciser le type, il suffit de rajouter après le = (ou le un caractère représentant le type attendu : s pour une chaîne (string), i pour un entier (integer) ou f pour un réel (float). Voici ce que cela donne :
    et sa provient de se site
    http://articles.mongueurs.net/magazines/linuxmag49.html

  5. #5
    Membre émérite
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Par défaut
    Le = veut dire que l'argument suivant l'option est obligatoire (soit dit en passant, les options et arguments sont deux choses différentes: les options commencent par un ou deux traits d'union et les arguments suivent une option). Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $result = GetOptions(
      "nom=s" => \$nom, # Si tu donnes --nom, tu dois obligatoirement donner un nom
      "sexe:s" => \$sexe, # Si tu donnes --sexe, tu peux omettre de le spécifier
    );
    Comme tu vois, c'est l'argument suivante l'option qui est obligatoire ou optionnel. Par contre, les deux options sont optionnelles. Voici comment tu peux te servir de ce programme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $ perl foo.pl
    $ perl foo.pl --name gnuvince
    $ perl foo.pl --sexe
    $ perl foo.pl --sexe male
    $ perl foo.pl --name gnuvince --sexe
    $ perl foo.pl --name gnuvince --sexe male
    Est-ce que ça t'aides?

  6. #6
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    532
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 532
    Par défaut
    ouai sa m'aide
    et donc c'est impossible d'obliger la personne à saisir -n ou --name et d'afficher un message d'erreur au cas ou elle ne le saisit pas avec getopt ?

Discussions similaires

  1. probeleme avec getopt
    Par donny dans le forum Langage
    Réponses: 7
    Dernier message: 28/11/2006, 20h54
  2. j'ai un probelem avec le composant NMHTTP
    Par timsah dans le forum C++Builder
    Réponses: 2
    Dernier message: 30/01/2006, 11h26
  3. probelem avec instance SQL server 2000
    Par timsah dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 20/12/2005, 12h13
  4. probelem avec l'utilitaire "BACKUP"
    Par timsah dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 20/10/2005, 18h37
  5. [reseaux] exemple avec getopts
    Par perlaud dans le forum Programmation et administration système
    Réponses: 5
    Dernier message: 03/06/2004, 13h35

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