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 :

Test si une variable eq a ..


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 56
    Par défaut Test si une variable eq a ..
    Bonjour j'aimerai savoir si quelqu'un saurait faire l'opération suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     if ( $string eq ("X" or "Y" or "Z)) {
          print " OK\n";
    }
    Cependant ce test ne fonctionne que pour le X et par le Y ou Z.
    J'ai essaye de remplacer les or par des || mais sans succès ...

    Cordialement

  2. #2
    Membre confirmé
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    87
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 87
    Par défaut
    Salut!

    essaye ca je suis pas sur si ca ce que tu veux:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    my $string = <STDIN>;
    chomp $string;
     
    my $X = <STDIN>;
    chomp $X;
     
    my $Y = <STDIN>;
    chomp $Y;
     
    my $Z = <STDIN>;
    chomp $Z;
     
     
    if (($string == 'X')||($string == 'Y')||($string == 'Z')){
    	print "ok!!!"
    }

  3. #3
    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
    Citation Envoyé par cricri77200 Voir le message
    Bonjour j'aimerai savoir si quelqu'un saurait faire l'opération suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     if ( $string eq ("X" or "Y" or "Z)) {
          print " OK\n";
    }
    Cependant ce test ne fonctionne que pour le X et par le Y ou Z.
    J'ai essaye de remplacer les or par des || mais sans succès ...
    Dans pratiquement tous les langages de programmation existant, cette opération doit se coder :
    Code Perl : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ( $string eq "X" or $string eq "Y" or $string eq "Z") {
          print " OK\n";
    }

    Toutefois, en Perl6 (tu utilises probablement Perl5 pour l'instant), tu peux effectivement procéder comme ton intuition te l'avait soufflé :
    Code Perl6 : Sélectionner tout - Visualiser dans une fenêtre à part
    say "OK" if $string eq any("X","Y","Z");
    ou
    Code Perl6 : Sélectionner tout - Visualiser dans une fenêtre à part
    say "OK" if $string eq ("X" | "Y" | "Z");
    (any(...) ou (.. | .. | ...) est ce que l'on appelle une jonction)

    --
    Jedaï

  4. #4
    Membre très actif

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Par défaut
    On peut aussi utiliser une regexp non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print "OK" if $string =~ /^[XYZ]$/;

  5. #5
    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
    Citation Envoyé par Alek-C Voir le message
    On peut aussi utiliser une regexp non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print "OK" if $string =~ /^[XYZ]$/;
    Effectivement, néanmoins il faut mettre en balance la lisibilité et la performance du truc... Dans ce cas particulier, je crains que l'utilisation d'une regex n'ait pratiquement aucun avantage niveau performance et soit bien moins lisible qu'une simple alternative de test d'égalité.

    Les regexps c'est bien, mais il ne faut surtout pas en abuser au risque d'abaisser nettement la lisibilité de son programme.

    --
    Jedaï

  6. #6
    Membre très actif

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Par défaut
    Ah, c'est amusant, en ce qui me concerne, je trouve ça plus pratique (niveau lisibilité) que la version perl5 (évidemment, je ne parle pas du perl6 qui est niquel).

    En fait, ce que je reproche au
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ( $string eq "X" or $string eq "Y" or $string eq "Z") {
          print " OK\n";
    }
    C'est que, selon moi, on a vite fait de s'y mélanger pour peu qu'il y ait 2/3 options, ou (pire) qu'il faille gérer la casse...
    Alors qu'avec la regexp, je trouve ça plus clair (comme quoi, les goûts et les couleurs)...

    Cela étant, tu as certainement beaaaaaauuuucoup plus d'expérience que moi dans le domaine donc je m'en souviendrais si j'ai un truc du genre à programmer !

    Par contre, entièrement d'accord sur les risques au niveau performance, mais j'imagine que ce n'est pas un critère prioritaire dans le contexte.

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

Discussions similaires

  1. [Tableaux] Problème de test sur une variable
    Par Laurent64 dans le forum Langage
    Réponses: 7
    Dernier message: 20/05/2007, 14h04
  2. faire un test sur une variable
    Par donny dans le forum Langage
    Réponses: 3
    Dernier message: 04/12/2006, 15h55
  3. [langage] probleme sur test d'une variable
    Par Melvine dans le forum Langage
    Réponses: 11
    Dernier message: 25/10/2006, 19h31
  4. [Mail] Construire un test avec une variable
    Par jeromesco dans le forum Langage
    Réponses: 3
    Dernier message: 17/02/2006, 21h52
  5. [xsl] Test avec une variable ?
    Par maxonman dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 24/01/2006, 10h47

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