Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
                   3'-TGAACGTACACTTTCCGGA-5'
                      x|x||||x||
          5'-GCGAAATAAGCATGCAAGT-3'

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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?