L'uniligne qui donne le bon résultat (à adapter en récupérant l'affectation de la variable $s) :
$ perl -e '($X, $N) = (30, 5);my $sequence = "ATC.GATGAT....ACAGTAGATA..CAGATATG..TTCGCG...ATATAGGCAAG...ATGGATA.CCAGTA.T";$s = join "", @{[substr($sequence, 0, $X-1) =~ /([ATCG])/g]}[-5..-1], @{[substr($sequence, $X-1) =~ /([ATCG])/g]}[0 .. 5];print "s=$s\n" '
Principe :
On découpe la séquence en deux morceaux, celui avant le caractère X, et celui après.
Pour chaque morceau, on récupère avec une regexp les ATCG dans un tableau anonyme dont on prend :
- pour la première moitié de la séquence, les 5 derniers éléments
- pour la deuxième moitié de la séquence, les 6 premiers éléments.
Partager