Salut,
j'ai un bout de code qui me permet de lire un fichier fasta et de séparer la séquence du commentaire:
Voici les deux types de fichier que je peux entrer :
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 }
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part while(<IN>)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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part while(<STDIN>)
logique! <STDIN> n'est pas une condition de sortie de ma boucle....
Mais je ne voitt pas comment faire......!
Merci
Partager