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 :

command Unix (+ clavier) sous perl


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Par défaut command Unix (+ clavier) sous perl
    bonjour

    je souhaite exécuter un programme sous perl.
    le probleme c'est qu'il s'agit d'un programme qui ne prend pas d'argument.
    par contre il pose des questions et attend une réponse clavier (3 fois).

    question 1
    aaa
    question 2
    bbb
    question 3
    ccc

    comment puis-je faire cela avec perl ???
    programme aaa bbb ccc : ne fonction pas sous unix
    programme < fichier : fonction sous unix

    y-a-t-il une façon simple de gérer ça sous perl
    ou faut-il créer un fichier ?
    quelle est la façon la plus simple de créer un fichier
    et de rajouter
    $aaa\n
    $bbb\n
    $ccc\n

    merci

  2. #2
    Mr6
    Mr6 est déconnecté
    Membre émérite

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 608
    Par défaut
    Salut !

    Réponse rapide : fonction open() !
    Réponse longue... plus tard j'ai pas le temps

    @+
    Mr6

  3. #3
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Par défaut
    Citation Envoyé par Mr6 Voir le message
    Salut !

    Réponse rapide : fonction open() !
    Réponse longue... plus tard j'ai pas le temps

    @+
    Mr6
    c'est bien ce que je pensais avec open()
    mais j'attends voir quand meme la réponde longue

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    voici un exemple pour t'aider

    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
    20
    #!/usr/bin/perl
    use strict;
    use warnings;
    $| = 1;
     
    my $nom    = pose_question("Quel est ton nom");
    my $prenom = pose_question("Quel est ton prenom");
    my $age    = pose_question("Quel est ton age");
     
    print "Bonjour $nom $prenom, Vous avez $age ans\n";
     
    sub pose_question {
        my $question = shift;
        print "$question : ";
        my $reponse = <STDIN>;
        chomp $reponse;
        print "\n";
     
        return $reponse;
    }

  5. #5
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Par défaut
    Citation Envoyé par djibril Voir le message
    voici un exemple pour t'aider

    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
    20
    #!/usr/bin/perl
    use strict;
    use warnings;
    $| = 1;
     
    my $nom    = pose_question("Quel est ton nom");
    my $prenom = pose_question("Quel est ton prenom");
    my $age    = pose_question("Quel est ton age");
     
    print "Bonjour $nom $prenom, Vous avez $age ans\n";
     
    sub pose_question {
        my $question = shift;
        print "$question : ";
        my $reponse = <STDIN>;
        chomp $reponse;
        print "\n";
     
        return $reponse;
    }
    merci pour cette exemple
    mais c'est pas vraiment ce que je souhaite faire.
    les questions sont posé par un programme externe (et ne prend pas de paramètre)
    je souhaite donner les paramètres au programme externe directement avec perl

  6. #6
    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
    Si le programme n'est pas trop complexe, tu peux sans doute faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    use IPC::Open2;
     
    my($chld_out, $chld_in);
    my $pid = open2($chld_out, $chld_in, 'some cmd and args');
     
    print {$chld_in} "$aaa\n$bbb\n$ccc\n";
    # close $chld_in; # peut-être nécessaire, décommente si ça ne marche pas
     
    while(my $line = <$chld_out>) {
       print $line;
    }
     
    waitpid $pid, 0;
    Sinon, il vaut mieux que tu utilises le module Expect du CPAN.

    --
    Jedaï

  7. #7
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Par défaut
    je pense que ça va répondre à mes besoins
    j'essaie ça demain
    merci

  8. #8
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Par défaut
    super ça marche
    quoi que un peu lent

  9. #9
    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 goanes Voir le message
    super ça marche
    quoi que un peu lent
    A priori ce n'est pas plus lent qu'une autre solution... A partir du moment où tu es obligé de créer un processus, c'est de toute façon la création de ce processus par le système d'exploitation qui est le facteur limitant quelque soit le langage. C'est pour ça qu'un script Perl (écrit en Perl, pas juste du "bash in Perl") est toujours plus rapide que le script bash correspondant (celui-ci crée un tas de processus).

    --
    Jedaï

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

Discussions similaires

  1. Utiliser une commande UNIX sous Windows XP
    Par issueTracker dans le forum Windows XP
    Réponses: 2
    Dernier message: 16/10/2007, 18h26
  2. [perl] Pipe dans une commande UNIX
    Par floxi dans le forum Linux
    Réponses: 6
    Dernier message: 29/08/2007, 00h21
  3. [SOLARIS]commande unix sous tomcat
    Par Maitrresse dans le forum Solaris
    Réponses: 1
    Dernier message: 18/04/2007, 10h19
  4. lancer une commande unix avec perl
    Par dm_manu dans le forum Langage
    Réponses: 1
    Dernier message: 02/08/2006, 19h41
  5. [langage] Commande Unix en Perl
    Par totox17 dans le forum Langage
    Réponses: 3
    Dernier message: 20/11/2002, 10h59

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