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 :

tester les parametres à l'entrée d'un script


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de rsuinux
    Homme Profil pro
    Infirmier Formateur pour logiciel de Dossiers de Soins Informatisés
    Inscrit en
    Août 2007
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Infirmier Formateur pour logiciel de Dossiers de Soins Informatisés
    Secteur : Santé

    Informations forums :
    Inscription : Août 2007
    Messages : 160
    Par défaut tester les parametres à l'entrée d'un script
    bonsoir;

    je cherche à tester les valeurs d'entrées dans mon script.
    En fait, mon script s'appel de cette manière:
    perl ~/bin/meteo.pl x
    avec x = 0 ou 1 Rien d'autre.
    J'arrive à tester toutes les valeurs hors 0 et 1, mais s'il n'y a pas de parametre, le script est executé. voila le début du script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #!/usr/bin/perl -w
    my $type = shift @ARGV;
    if ($type =~ /[^0|1]/) {
            die "Usage: $0 <0|1>\n";
    }
     
    use Geo::METAR;
    use LWP::UserAgent;
    use strict;
    ......
    Comment je peux faire pour quitter s'il n'y a pas de parametre en entrée ou si c'est autre chose que 0 ou 1?
    La FAQ ne m'a pas aidé sur ce coup là.

    Merci de votre aide.
    R. Suinot

  2. #2
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    On ne poste pas sur ce forum mais uniquement dans les sous-forums, je te déplace dans "Langage".

    Ton test est très bizarre, en fait il vérifie que l'argument ne contient pas "0" ou "|" ou "1" et dans ce cas arrête le programme... Je doute que ce soit ce que tu veux. Tu devrais réviser tes regexps et tes conditionnelles. Ce que tu veux est plutôt de l'ordre de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #!/usr/bin/perl -w
    use Geo::METAR;
    use LWP::UserAgent;
    use strict;
     
    my $type = shift @ARGV;
    if ($type !~ /^[01]$/) {
            die "Usage: $0 <0|1>\n";
    }
     
    #...
    --
    Jedaï

  3. #3
    Membre confirmé Avatar de rsuinux
    Homme Profil pro
    Infirmier Formateur pour logiciel de Dossiers de Soins Informatisés
    Inscrit en
    Août 2007
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Infirmier Formateur pour logiciel de Dossiers de Soins Informatisés
    Secteur : Santé

    Informations forums :
    Inscription : Août 2007
    Messages : 160
    Par défaut
    Désolé pour avoir mal 'posté', et merci pour avoir redirigé.

    Ta solution est plus efficace que la mienne, mais fait t il tester avant, le cas ou $type est
    'vide' (unset?)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $ ./meteo.pl 3
    Usage: ./meteo.pl <0|1>
    $ ./meteo.pl
    Use of uninitialized value in pattern match (m//) at ./meteo.pl line 22.
    Usage: ./meteo.pl <0|1>
    l'erreur levée ligne 22 est elle inévitable?

    Rémi.

  4. #4
    Membre chevronné
    Avatar de Schmorgluck
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 371
    Par défaut
    Non, elle n'est pas inévitable, mais tu dois alors tester si $type est défini.
    Du coup, le test deviendrait quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    unless (defined $type and $type =~ /^[01]$/)
    {
            die "Usage: $0 <0|1>\n";
    }

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2007
    Messages : 244
    Par défaut
    salut,

    tu peux faire comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #!/usr/bin/perl -w
    use Geo::METAR;
    use LWP::UserAgent;
    use strict;
     
    my $type = shift @ARGV;
    if (!defined($type) || $type !~ /^[01]$/) {
            die "Usage: $0 <0|1>\n";
    }
    à plus

    on m'a prit de vitesse

  6. #6
    Membre confirmé Avatar de rsuinux
    Homme Profil pro
    Infirmier Formateur pour logiciel de Dossiers de Soins Informatisés
    Inscrit en
    Août 2007
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Infirmier Formateur pour logiciel de Dossiers de Soins Informatisés
    Secteur : Santé

    Informations forums :
    Inscription : Août 2007
    Messages : 160
    Par défaut
    Très fort!
    J'avoue que je reste béa devant tant de perspicacité...

    Ca marche, bien sur!
    Gran merci à vous deux pour votre aide.
    Je marque la discution comme résolue, mais je pense que je referais appel à vous plus tard.

    Rémi.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/05/2014, 10h29
  2. Réponses: 4
    Dernier message: 19/02/2008, 02h24
  3. Plannification script tout les 1/4h - entre 8h-20h
    Par shaun_the_sheep dans le forum Administration système
    Réponses: 10
    Dernier message: 12/06/2007, 11h22
  4. Script Perl: afficher les parametres
    Par Optimistic dans le forum Langage
    Réponses: 2
    Dernier message: 03/06/2007, 16h27
  5. gerer les parametres entrée sur un TADOStoredProc
    Par keguira dans le forum Bases de données
    Réponses: 1
    Dernier message: 13/09/2004, 15h56

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