Bonjour,
j'ai un problème avec une fonction,
Cette fonction permet de parcourir une chaine($sequence) de longueurvariable et attribue des scores si certains caractères sont présents à certaines positions.
Mon code est le suivant :
je ne comprends pas pourquoi, alors qu'il n'y a pas de "A" en position 5, en résultat, j'ai présence d'un "A" en position 5. Et quand je rentre des séquences différentes, j'obtiens d'autres bizzareries.
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 #!/usr/bin/perl -w use strict; my $res; my $sequence= "CCCCCGGGGGGAAAAAAAGAACCCCAA"; sub MOTIF { my ($sequence)= @_; my $score = 0; #Test "A" en position 5 if ($sequence =~ m/.{4}A.*/) {print "Presence d'un \"A\" en position 5.\n"; $score = 1;} # "U" en position 12 if ( $sequence =~ m/.{11}U.*/) {print "Presence d'un \"U\" en position 12.\n"; $score = $score + 1;} # absence de "G" en position 15 if ( $sequence =~ m/.{14}(A|U|C)./) {print "Absence d'un \"G\" en position 15.\n"; $score = $score + 1;} # "A" en position 21 if ( $sequence =~ m/.{20}A.*/) {print "Presence d'un \"A\" en position 21.\n"; $score = $score + 1;} # ni "G" ni "C" en position 21 if ( $sequence =~ m/.{20}(A|U).*/) {print "Absence d'un \"G\" et d'un \"C\" en position 21.\n"; $score = $score + 1;} return ($score); } $res = MOTIF($sequence); print "Le score de ce motif est de $res.";
je pense que mon erreur doit être au niveau des expressions régulières
merci
perlaud
Partager