Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Limiter l'impression d'un texte par print

3 views
Skip to first unread message

erkaden

unread,
Dec 22, 2012, 1:09:49 PM12/22/12
to
Bonjour,

Dans le cadre d'une évaluation, je dois créer un programme perl qui me permet
d'imprimer les premiers caractères d'une séquence d'ADN dans une base de
données. Voici ce que j'ai jusqu'ici :
open (seq,"./sequencetest.txt");


while (<seq>) {



if (/^atg/) {$ligne=$_;}

$debut=substr($ligne,0,8);
print "$debutn";
}



Ce programme me permet bien de sortir les 8 premiers caractères d'une séquence
(commençant par atg), mais le souci est que ces caractères sont imprimés en
grand nombre (une impression par ligne de séquence apparemment)... Comment
puis-je faire pour n'imprimer qu'une seule fois les mêmes caractères?

Un grand merci pour votre aide!

PS : les parenthèses de la ligne while entourent <seq>

Emmanuel Florac

unread,
Dec 22, 2012, 1:32:17 PM12/22/12
to
Le Sat, 22 Dec 2012 12:09:49 -0600, erkaden a écrit:


> Ce programme me permet bien de sortir les 8 premiers caractères d'une
> séquence (commençant par atg), mais le souci est que ces caractères sont
> imprimés en grand nombre (une impression par ligne de séquence
> apparemment)...

Ben oui, le programme affiche chaque début de ligne qui "matche".

> Comment puis-je faire pour n'imprimer qu'une seule fois
> les mêmes caractères?

Pas compris. Quels caractères, les "atg" du début?


Note: puis si tu n'as pas compris le programme simplissime que tu as
posté, ne viens pas sur les forums pour qu'on fasse tes devoirs pour toi:
ce n'est pas un service à te rendre.


--
I have always wished for my computer to be as easy to use as my
telephone; my wish has come true because I can no longer figure out
how to use my telephone.
Bjarne Stroustrup

Marc Espie

unread,
Dec 22, 2012, 1:40:29 PM12/22/12
to
In article <VJadnRBkjNf...@giganews.com>,
erkaden <nospam_...@hotmail.com.invalid> wrote:
>Bonjour,
>
>Dans le cadre d'une �valuation, je dois cr�er un programme perl qui me permet
>d'imprimer les premiers caract�res d'une s�quence d'ADN dans une base de
>donn�es. Voici ce que j'ai jusqu'ici :
>open (seq,"./sequencetest.txt");
>
>
>while (<seq>) {
>
>
>
>if (/^atg/) {$ligne=$_;}
>
>$debut=substr($ligne,0,8);
>print "$debutn";
>}
>
>
>
>Ce programme me permet bien de sortir les 8 premiers caract�res d'une s�quence
>(commen�ant par atg), mais le souci est que ces caract�res sont imprim�s en
>grand nombre (une impression par ligne de s�quence apparemment)... Comment
>puis-je faire pour n'imprimer qu'une seule fois les m�mes caract�res?

Utilise un hash.

zerkaden

unread,
Dec 22, 2012, 2:03:36 PM12/22/12
to
Le samedi 22 Décembre 2012 à 19:09 par erkaden :
En gros, je pars d'un fichier contenant plusieurs séquences entières (par
exemple, http://biocyc.org/BMEL359391/sequence-rc?type=GENE&object=GJOQ-2703) et
je dois en faire ressortir les 8 premiers caractères (commençant par atg).

J'arrive bien à imprimer les 8 premiers caractères de chaque séquence (ici
atgTCCAC, mais ceux-ci sont imprimés plusieurs fois. Or, ces caractères ne sont
présents qu'une seule fois dans la séquence, d'où mon incompréhension. J'espère
que c'est plus clair.

Olivier Miakinen

unread,
Dec 22, 2012, 4:24:36 PM12/22/12
to
Le 22/12/2012 20:03, zerkaden a ᅵcrit :
>>
>> while (<seq>) {
>>
>> if (/^atg/) {$ligne=$_;}
>>
>> $debut=substr($ligne,0,8);
>> print "$debutn";
>> }
>
> J'arrive bien ᅵ imprimer les 8 premiers caractᅵres de chaque sᅵquence (ici
> atgTCCAC, mais ceux-ci sont imprimᅵs plusieurs fois. Or, ces caractᅵres ne sont
> prᅵsents qu'une seule fois dans la sᅵquence, d'oᅵ mon incomprᅵhension. J'espᅵre
> que c'est plus clair.

Oui, c'est trᅵs clair. En gros, tu voudrais que les instructions substr
et print ne soient exᅵcutᅵes que lorsque le test if est vrai. Eh bien
regarde donc oᅵ s'arrᅵte la liste d'instructions suivant le if, c'est-
ᅵ-dire regarde oᅵ tu as placᅵ tes accolades.

Cordialement,
--
Olivier Miakinen

zerkaden

unread,
Dec 23, 2012, 6:02:58 AM12/23/12
to
Le samedi 22 D�cembre 2012 � 22:24 par Olivier Miakinen :
> Le 22/12/2012 20:03, zerkaden a �crit :
>>>
>>> while (<seq>) {
>>>
>>> if (/^atg/) {$ligne=$_;}
>>>
>>> $debut=substr($ligne,0,8);
>>> print "$debutn";
>>> }
>>>
>>
>> J'arrive bien � imprimer les 8 premiers caract�res de chaque
>> s�quence (ici
>> atgTCCAC, mais ceux-ci sont imprim�s plusieurs fois. Or, ces
>> caract�res ne sont
>> pr�sents qu'une seule fois dans la s�quence, d'o� mon
>> incompr�hension. J'esp�re
>> que c'est plus clair.
>>
>>
> Oui, c'est tr�s clair. En gros, tu voudrais que les instructions substr
> et print ne soient ex�cut�es que lorsque le test if est vrai. Eh
> bien
> regarde donc o� s'arr�te la liste d'instructions suivant le if,
> c'est-
> �-dire regarde o� tu as plac� tes accolades.
>
> Cordialement,
> --
> Olivier Miakinen
Merci beaucoup, c'est r�solu!

Olivier Miakinen

unread,
Dec 23, 2012, 12:47:34 PM12/23/12
to
Le 23/12/2012 12:02, zerkaden a ᅵcrit :
>>
> Merci beaucoup, c'est rᅵsolu!

:-)

0 new messages