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 :

system() et récupération d'information


Sujet :

Langage Perl

  1. #1
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut system() et récupération d'information
    Voici mon script. J'aimerais savoir si il y a moyen de directement récupérer le résultat de la commande system() dans une variable sans passer par un fichier?


    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    #!/usr/local/bin/perl
     
    use strict;
    use warnings;
     
    use FileHandle;
     
     
     
    # données pour primer3_core.exe
    my $data = 'PRIMER_SEQUENCE_ID=example
    SEQUENCE=GTAGTCAGTAGACNATGACNACTGACGATGCAGACNACACACACACACACAGCACACAGGTATTAGTGGGCCATTCGATCCCGACCCAAATCGATAGCTACGATGACG
    TARGET=37,21
    PRIMER_OPT_SIZE=18
    PRIMER_MIN_SIZE=15
    PRIMER_MAX_SIZE=21
    PRIMER_NUM_NS_ACCEPTED=1
    PRIMER_PRODUCT_SIZE_RANGE=75-100
    PRIMER_FILE_FLAG=1
    PRIMER_PICK_INTERNAL_OLIGO=1
    PRIMER_INTERNAL_OLIGO_EXCLUDED_REGION=37,21
    PRIMER_EXPLAIN_FLAG=1
    =
    ';
     
    # création du fichier contenant les données
    my $data_fh = FileHandle->new('>P:/Files/primer3_data.txt');
    print $data_fh $data;
    close $data_fh;
     
    # passage du fichier contenant les données et création du fichier contenant le résultat
    system('"C:/Program Files/primer3/bin/primer3_core.exe" < P:/Files/primer3_data.txt > P:/Files/primer3_result.txt') and print $!;
     
    # récupération du résultat dans une variable
    my $result_file = 'P:/Files/primer3_result.txt';
    my $result = do {
      local $/;
      open my($file), '<', $result_file or die "Can't open $result_file : $!\n";
      <$file>
    };
     
     
    # destruction du fichier contenant les données
    unlink('P:/Files/primer3_data.txt');
    # destruction du fichier contenant le résultat
    unlink('P:/Files/primer3_result.txt');
     
     
    print $result."\n";

    Merci pour votre aide,
    -- Jasmine --

  2. #2
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Dans ce cas, fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $Resultat = `"C:/Program Files/primer3/bin/primer3_core.exe" < P:/Files/primer3_data.txt > P:/Files/primer3_result.txt'`;

  3. #3
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par djibril Voir le message
    Dans ce cas, fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $Resultat = `"C:/Program Files/primer3/bin/primer3_core.exe" < P:/Files/primer3_data.txt > P:/Files/primer3_result.txt'`;
    ça ne fonctionne pas ... il ne manque pas quelque chose afin de dire à Perl qu'il doit envoyer ça au système?

    Y a pas moyen de dire que STDOUT est une variable?
    -- Jasmine --

  4. #4
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2007
    Messages : 273
    Points : 83
    Points
    83
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    system($Resultat);
    ??? j'ai le lu le poste en vitesse donc si ca se trouve je dis n'importe quoi

  5. #5
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par danathane Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    system($Resultat);
    ??? j'ai le lu le poste en vitesse donc si ca se trouve je dis n'importe quoi
    Non, j'ai aussi essayé, ça ne va pas.
    -- Jasmine --

  6. #6
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $Resultat = `"C:/Program Files/primer3/bin/primer3_core.exe" < "P:/Files/primer3_data.txt" > "P:/Files/primer3_result.txt"`;

  7. #7
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Voila, j'ai enlevé le fichier de sortie et les doubles quotes autour du fichier d'entrée et maintenant cela fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $Resultat = `"C:/Program Files/primer3/bin/primer3_core.exe" < P:/Files/primer3_data.txt`;

    Merci pour votre aide.
    -- Jasmine --

  8. #8
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut

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

Discussions similaires

  1. Récupération d'informations
    Par nicolas66 dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 19/03/2006, 19h42
  2. Réponses: 5
    Dernier message: 03/02/2006, 13h47
  3. Récupération des informations memoire
    Par xxiemeciel dans le forum Windows
    Réponses: 2
    Dernier message: 12/08/2005, 16h43
  4. Réponses: 9
    Dernier message: 17/08/2004, 16h16
  5. Réponses: 6
    Dernier message: 28/04/2004, 10h41

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