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 :

Débutant - Entrée/Sortie


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 7
    Par défaut Débutant - Entrée/Sortie
    Bonjour

    je viens de me lancer dans le Perl. Le "Hello World" fonctionne, ouf!
    Mais j'ai un problème avec le programe (simple) suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    print "What's your name? ";
    $name = <STDIN>;
    chomp($name);
    A l'exécution, rien ne se produit sauf si je tape qqc au clavier, auquel cas il m'affiche le message "What's your name?"...
    Pourtant, je voudrais qu'il affiche ce message avant la saisie au clavier. Qu'est ce qui ne va pas dans le code?

    Config : Eclipse 3.1, plug-in EPIC, ActivePerl 5.8.7

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 603
    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 603
    Par défaut Re: Débutant - Entrée/Sortie
    Citation Envoyé par seigneur.viggen
    Bonjour

    je viens de me lancer dans le Perl. Le "Hello World" fonctionne, ouf!
    Mais j'ai un problème avec le programe (simple) suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    print "What's your name? ";
    $name = <STDIN>;
    chomp($name);
    A l'exécution, rien ne se produit sauf si je tape qqc au clavier, auquel cas il m'affiche le message "What's your name?"...
    Pourtant, je voudrais qu'il affiche ce message avant la saisie au clavier. Qu'est ce qui ne va pas dans le code?

    Config : Eclipse 3.1, plug-in EPIC, ActivePerl 5.8.7
    Bonjour,

    a priori :
    - un script avec juste print "hello, world"; fonctionne et t'affiche bien hello, world
    - un autre script commençant par un print n'affiche rien

    Bizarre, ta config

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 603
    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 603
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #/usr/bin/perl
    use strict;
    my $val = "";
    while(! $val) {
        print "Quel est ton age ?";
        chomp($val = <STDIN>);
    }
    print "tu as $val ans\n";
    Ce code fonctionne sur ma config (win2000 + un vieux Perl) et m'affiche bien la question avant de faire quoi que ce soit d'autre.

    Est-ce qu'il fait également la même chose chez toi ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 7
    Par défaut
    En fait, c'sst comme si les instructions de lecture et d'écriture étaient inversées.
    J'ai écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print("What is your name? ");
    $name = <STDIN>;
    Mais à l'exécution, j'obtiens l'inverse : d'abord la lecture du clavier, puis l'affichage du message

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 7
    Par défaut
    Non, cela me fait le problème : il attend une entrée au clavier avant d'afficher les messages

    Mon affichage :
    5
    Quel est ton age ?tu as 5 ans


    [/code]

  6. #6
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 889
    Par défaut
    Bizarre ton problème !
    Comment exécutes-tu ton code ? Via Eclipse ? Ou tu le lances par une fenêtre DOS ?

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  7. #7
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    Tout ceci ressemble fort à un problème de buffersation des entrées sorties ... du à quoi, ça, c'est un autre problème ...

    Tu peux tenter, en début de script, de positionner la variable spéciale $| : Je ne me souviens plus si c'est suffisant où s'il faut aussi passer par un select sur STDOUT ...

    Une autre solution passe par, en début de script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    use IO::Handle;
    STDOUT->autoflush(1);
    Bon courage pour la suite ...

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 7
    Par défaut
    Je l'exécute directement dans Eclipse, en tant que projet Perl... J'utilise Windows si ca peut vous aider à trouver...

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 7
    Par défaut
    Merci 2EuroCents! J'ai rajouté les deux lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    use IO::Handle; 
    STDOUT->autoflush(1);
    et cela fonctionne!

    Merci beaucoup!

  10. #10
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Par défaut
    Et avec un \n comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print "What's your name? \n";
    Ca ne marche pas mieux ?

    Jérôme

  11. #11
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    Citation Envoyé par jejeman
    Et avec un \n comme cei :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print "What's your name? \n";
    Ca ne marche pas mieux ?
    C'est une possibilité, mais comment fait-on, alors, si l'on veut que la réponse de l'utilisateur soit sur la même ligne que la question ???

  12. #12
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    Citation Envoyé par seigneur.viggen
    et cela fonctionne!
    Alors n'oublie pas le tag [Résolu]

    Tu peux l'appliquer à ton sujet en utilisant le bouton, en bas à gauche de l'interface quand tu visualises le fil ... Cela permet, ensuite, des requêtes spécifiques à la modération ...

    Merci d'avance.

    P.S. Ce message de rappel, ainsi que toute réponse directe qui pourrait lui être apportée, sera supprimé aussitôt le tag [Résolu] apposé au sujet.

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/04/2010, 11h24
  2. Réponses: 2
    Dernier message: 08/02/2010, 12h12
  3. IO entrée sortie cas d'école [débutant]
    Par crazykangourou dans le forum Langage
    Réponses: 3
    Dernier message: 13/03/2007, 14h24
  4. [Débutant]Procédure avec paramètres entrée / sortie
    Par jeromejanson dans le forum Langage
    Réponses: 13
    Dernier message: 10/10/2005, 08h30
  5. [Débutant]#entre int main & void main
    Par Binga dans le forum C
    Réponses: 9
    Dernier message: 10/08/2004, 15h54

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