regexp et compte d'éléments
Code:
1 2 3
| 3'-TGAACGTACACTTTCCGGA-5'
x|x||||x||
5'-GCGAAATAAGCATGCAAGT-3' |
Code:
1 2 3
| 3'-GGTACGTACATAATCCGTGTG-5'
|||||||x||
5'-AGGCCTACCACATGCAAGT-3' |
J'aimerais compter le nombre de pipes successifs qui commence au début.
Pour le premier exemple, ce serait donc 0 et pour le second, ce serait 7.
Code:
1 2 3 4 5 6 7 8 9 10
| if (${$h_ref}{'Seq1'} =~ m/^\s+3/){
# on compte le nombre de pipes successifs en 3'
my ($pipes) = ${$h_ref}{'Pipes'} =~ m/^\s+(\|*)/;
my @array_pipes = split '', $pipes;
if (int(@array_pipes) >= $pipes_threshold){
...
}
} |
Ce code fonctionne, avec ${$h_ref}{'Seq1'} contenant la première ligne (3'-GGTACGTACATAATCCGTGTG-5') et ${$h_ref}{'Pipes'} contenant la ligne des pipes.
Il doit y avoir moyen de faire plus simple, je pense à quelque chose de ce genre, mais il ne faut pas compter les pipes à l'extrémité droite après la croix :
Code:
my $count = () = ${$h_ref}{'Pipes'} =~ m/[\s\|](\|)/g;
Il faudrait donc une regexp qui recherche individuellement les pipes du début et qui s'arrête quand on trouve une croix.
Avez-vous une idée pour la regexp ou une autre solution qu'une regexp?