Bonjour à tous,

Mon but est de récupérer des informations entre des balises via a un parser...(Mon parser fonctionne, aucun problème à ce niveau là).

Cependant j'ai remarqué que beaucoup de textes se situaient entre les balises <td>...</td>. Malheureusement ces informations nappartiennet pas toutes au meme sujet, je voudrais faire le tri !!!

Exemple (Ce n'est qu'une partie de mon programme, le reste fonctionne...)

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
44
45
sub start_rtn {
 
	my ($tag, $attr) = @_;
if ($tag =~ /^td$/){
	$flag = 6;
	}
 
	if ($tag =~ /^b$/){
		$flag = 7;
	}
 
	if ($tag =~ /^td$/){
		$flag = 8;
	}
if ($tag =~ /^td$/){
		$flag = 10;
	}
}
 
sub text_rtn {
 
my ($text) = @_;
   	$text =~ s/\n/ /g;
 
if($flag == 6 && (($text eq 'Intron') || ($text eq 'Exon') || ($text eq 'NA') || ($text =~ /^[0-9]' UTR*$/))){
		print "Feature : $text\n" ;
	}
 
	if($flag == 7 && ($text =~ /^[A-Z]{1}[a-z]{2}\/[A-Z]{1}[a-z]{2}$/ || $text =~ /^[A-Z]{1}[a-z]{2}$/)){
		print "Amino Acid Translation : $text\n";
	}
 
	if($flag == 8 && ($text =~ /^[A-Z]{1}[a-z]{2}\/[A-Z]{1}[a-z]{2}$/ || $text =~ /^[A-Z]{1}[a-z]{2}$/)){
		print "Amino Acid Translation : $text\n";
    	}
if($flag == 10 && ($text =~ /^[0-9]/ && $text ne '3\' UTR' && $text ne '5\' UTR')){
		print "Number of Chromosomes : $text\n";
	}
}
 
sub end_rtn {
     my ($tag) = @_;
if ($tag =~ /^\/td$/ && ($flag == 6 || $flag == 8 || $flag == 10|| $flag == 11)){
		$flag = 0;
	}
Mon problème est de ne pas savoir jongler avec les différentes balises "td" et les boucles "if" dans ma start_rtn, pour récupérer des informations pour chaque type de sujet...Merci pour vos commentaires

Si vous avez besoin d'autres précisions, et si vous voulez mon code tout entier aussi!!!