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] Fermer mon programme


Sujet :

Langage Perl

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Points : 7
    Points
    7
    Par défaut [langage] Fermer mon programme
    J'aimerais que lorsque je rentre la touche Q ca ferme mon programme , pour l'instant j'en suis a la :

    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
    $_ = 0;
    do {
        print "Pour calculer le prix HT depuis le prix TTC entrez (1),\n";
        print "pour calculer le prix TTC depuis le prix HT entrez (2),\n";
        print "ou 'Q' pour Quitter : ";
        chomp($_ = <STDIN>);
          $_ = 0 if (! $_ || ($_ ne "1" && $_ ne "2" && $_ ne "Q"));
        } while(! $_);
     
        $variablepourfermer = <stdin>;
        if($variablepourfermer == "Q")
        {
        $variablepourfermer == exit(0) ;
        }
    exit 0 if $variablepourfermer == "Q";
    mais ca marche pas enfin il y a un bug , comment corriger ca ?

  2. #2
    Membre éclairé
    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
    Points : 803
    Points
    803
    Par défaut
    Utilise IO::Prompt de CPAN. Voici deux exemples d'utilisations:

    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
    17
    18
     
    use IO::Prompt;
     
    print <<EOF;
    1. J'aime les pissenlits
    2. J'ai perdu le do de ma clarinette
    Q. Quitter
    EOF
    my $valeur = prompt "> ", -1, -r => { "Choix invalide >" => qr/[12q]/i };
    print "\n$valeur\n";
     
    my $valeur = prompt 'Fais ton choix:', -1,
                        -menu => {
                          pissenlits => 'J\'aime les pissenlits',
                          clarinette => 'J\'ai perdu le do de ma clarinette',
                          quit       => 'Quitter',
                        };
    print "\n$valeur\n";
    Une fois $valeur obtenue, c'est un jeu d'enfants de faire le if pour quitter. Bonne chance

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 587
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 587
    Points : 2 036
    Points
    2 036
    Par défaut
    Bonjour,

    pas trop la peine d'utiliser un module externe, juste pour si peu

    Ton code ne fonctionne pas parce que tu t'es mélangé les pinceaux entre l'opérateur d'égalité "eq" utilisé avec 2 chaines de caractères et l'opérateur "==" utilisé avec du numérique.

    Voici ton code remanié (je garde ton code faux en commentaires) :

    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
    17
    18
    19
    $_ = 0;
    do {
        print "Pour calculer le prix HT depuis le prix TTC entrez (1),\n";
        print "pour calculer le prix TTC depuis le prix HT entrez (2),\n";
        print "ou 'Q' pour Quitter : ";
        chomp($_ = <STDIN>);
          $_ = 0 if (! $_ || ($_ ne "1" && $_ ne "2" && $_ ne "Q"));
        } while(! $_);
     
    #    $variablepourfermer = <stdin>;
       $variablepourfermer = $_;
    #   if($variablepourfermer == "Q")
    #   if($variablepourfermer == "Q")
    #   {
    #    $variablepourfermer == exit(0) ;
    #    }
     
    #exit 0 if $variablepourfermer == "Q";
    exit if $variablepourfermer eq "Q";
    Voilà, j'ai mis en commentaire ton bloc de fin de code pour ne retenir que la dernière ligne qui fait quitter ton programme si la lettre tapée au clavier est "Q".

    Attention : si l'utilisateur tape "q" minuscule, ça n'a rien à voir avec le "Q" majuscule.

    Essaie maintenant, ça devrait mieux fonctionner

  4. #4
    Membre chevronné
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Points : 2 004
    Points
    2 004
    Par défaut
    Bonjour,

    Juste une petite précision, quand on reçoit une saisie au clavier en lisant le handle stdin, on reçoit aussi le retour chariot \n, donc à chaque lecture de stdin, il fut systématiquement faire un chomp.

    Je le précise au cas où car dans le code de frees3x cela n'a pas été fait

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 587
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 587
    Points : 2 036
    Points
    2 036
    Par défaut
    Citation Envoyé par Woufeil
    Je le précise au cas où car dans le code de frees3x cela n'a pas été fait
    Si si : chomp($_ = <STDIN>);

  6. #6
    Membre chevronné
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Points : 2 004
    Points
    2 004
    Par défaut
    Non non, $variablepourfermer = <stdin>;

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 587
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 587
    Points : 2 036
    Points
    2 036
    Par défaut
    Citation Envoyé par Woufeil
    Non non, $variablepourfermer = <stdin>;
    Dont je précise l'inutilité dans ma réponse suivante

  8. #8
    Membre chevronné
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Points : 2 004
    Points
    2 004
    Par défaut
    Euh, ça va hein

    Je donnais juste une précision, j'avais l'impression que frees3x n'avait pas comprit

  9. #9
    Membre habitué Avatar de rcageot
    Profil pro
    rien
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Points : 170
    Points
    170
    Par défaut
    ho les enfants, arrêtez de vous battre sinon au lit sans dessert

  10. #10
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 587
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 587
    Points : 2 036
    Points
    2 036
    Par défaut
    Citation Envoyé par rcageot
    ho les enfants, arrêtez de vous battre sinon au lit sans dessert
    Tiens, tu viens compter les points ?

    Pas de soucis, j'arrête là

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/01/2012, 14h01
  2. Quel langage pour mon programme ?
    Par leoph dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 11/10/2008, 12h48
  3. [] Utiliser AVI d'une DLL dans mon programme
    Par seb.49 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 02/05/2003, 15h52
  4. Réponses: 11
    Dernier message: 17/03/2003, 11h56
  5. Réponses: 4
    Dernier message: 16/01/2003, 15h42

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