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] condition de sortie d'une boucle


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 48
    Points
    48
    Par défaut [langage] condition de sortie d'une boucle
    Salut,

    j'ai un bout de code qui me permet de lire un fichier fasta et de séparer la séquence du commentaire:
    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
     
      while(<IN>) ## tant que le fichier IN est parcouru
          {
            chomp; # si saut de ligne on le supprime
            if (/^>(\S+)\s?.*$/) # si ca commence par un chevron, on ne prend pas le chevron et on ne prends que le premier mot qui est avant l'espace
              {
                if ($hdr eq '' and $comment eq '') { ## si $hdr et si $comment sont "vides 
                  $comment = $1; ## $comment = ce qui est dans la première parenthèse de l'expression régulière
                  ## donc = (\S+) c'est-à-dire tout ce qui est après le chavron et qui (n'est pas un espace) est avant l'espace
                  next; } ## provoque la fin de l'execution du bloc 
     
                $hdr = $1;
                last; ## provoque la fin de la boucle, ni l'increment ni le test ne sont effectues
              }
     
            if ($hdr ne '' and $comment eq '') { ## si $hdr n'est pas "vide" et si $comment est "vides 
              $comment = $hdr; }
            $sequence .= $_; ## concatenation des lignes lues 
          }
     
        if ($comment eq '' and $sequence eq '') {
          last; } # si c'est la fin du fichier c'est-a-dire que la ligne lue est vide
      }
    Voici les deux types de fichier que je peux entrer :
    soit le fichier ne comprends qu'une seule sequence :

    [EDITE PAR CHOUPI, sequence trop longue ! voir MP]

    Donc ca marche très bien si j'entre les noms des fichiers en lignes de commandes, mais maintenant, j'aimerai ne plus avoir à entrer le fichier et pouvoir saisir directement la sequence en format FASTA dans mon terminal.

    Mon problème est que je n'arrive pas à trouver de condition de sortie de ma boucle : j'ai remplacer
    par mais bien sûr ça ne marche pas car cela me fait taper une infinité de fois sur entrée et la suite du programme n'apparait pas.

    logique! <STDIN> n'est pas une condition de sortie de ma boucle....
    Mais je ne voitt pas comment faire......!

    Merci

  2. #2
    Expert éminent
    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
    Points : 8 586
    Points
    8 586
    Par défaut
    tu mets un last if m/^$/; au début de ta boucle.

    --
    Jedai

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 48
    Points
    48
    Par défaut
    je comprends ce que tu veux dire par
    last if m/^$/;
    c'est-à-dire sort de la boucle si ca commence par une fin de chaine
    mais je ne sais pas comment l'incorporer dans la boucle, de plus je crois que je dois rajouter des accolades?

    Merci

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    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 572
    Points : 2 014
    Points
    2 014
    Par défaut
    Relis ce que Jedai t'as indiqué... Tu le mets en début de ta boucle (juste en dessous du while).

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

Discussions similaires

  1. Problème de sortie d'une boucle
    Par sebdu94 dans le forum C
    Réponses: 12
    Dernier message: 19/01/2008, 09h43
  2. Sortie d'une boucle
    Par NELLLY dans le forum MATLAB
    Réponses: 11
    Dernier message: 14/01/2008, 19h36
  3. Réponses: 1
    Dernier message: 18/10/2007, 17h13
  4. vérification à la sortie d'une boucle
    Par freestyler dans le forum Delphi
    Réponses: 4
    Dernier message: 10/10/2006, 15h44
  5. [langage] incrementation de variable dans une boucle
    Par mimilou dans le forum Langage
    Réponses: 15
    Dernier message: 16/04/2004, 13h23

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