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