En récupérant le retour de s///, tu obtiens le nombre de substitution effectuée.
S'il y en a 2, pas de traitement particulier, la séquence avait un début et une fin.
S'il n'y en a qu'une, il faut limiter la séquence résultante à 250 nucléotides... Le tout est de savoir si on a supprimé la première ou la deuxième alternative du motif (le start ou le end), pour savoir où supprimer les nucléotides en trop. Et là... je cherche... mais il y a une solution avec les assertions de code (expérimental en 5.10).
Code:
1 2
| my $start_found = 0;
my $start_end_found = 2 == $seq =~ s/.*$start(?{$start_found++})|$end.*//g; |
A présent, tu sais si le début a été trouvé ou non, il suffit donc de faire le substr qui va bien.