Problème initialisation tableau code HTML::Parser
Bonjour à tous,
J'ai écrit un programme pour récupérer des informations dans une page HTML, grâce au module HTML:: Parser
Cela fonctionne (j'arrive à les récupérer) !!! Cependant dans ma console on inscrit plusieurs fois :
Use of uninitialized value in pattern match (m//) at "nom_fichier.pl" line 52
Use of uninitialized value in pattern match (m//) at "nom_fichier.pl" line 63
Use of uninitialized value in pattern match (m//) at "nom_fichier.pl" line 34
Use of uninitialized value in pattern match (m//) at "nom_fichier.pl" line 40
Use of uninitialized value in pattern match (m//) at "nom_fichier.pl" line 46
Use of uninitialized value in pattern match (m//) at "nom_fichier.pl" line 69
Use of uninitialized value in pattern match (m//) at "nom_fichier.pl" line 34
Use of uninitialized value in pattern match (m//) at "nom_fichier.pl" line 40
Use of uninitialized value in pattern match (m//) at "nom_fichier.pl" line 34
Use of uninitialized value in pattern match (m//) at "nom_fichier.pl" line 40
Use of uninitialized value in pattern match (m//) at "nom_fichier.pl" line 34
Use of uninitialized value in pattern match (m//) at "nom_fichier.pl" line 40
...........
Voici mon code :
Code:
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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145
| #!/usr/bin/perl
use warnings;
use HTML::Form;
use LWP::Simple;
use HTML::Parser();
use HTML::LinkExtor;
#Récupération arguments
my $filename = 'myfile.html';
#my $filename = get("http://www.pharmgkb.org/do/serve?objId=PA227&objCls=Gene" || shift);
my $flag = 0;
#open file
open (my $fh, $filename) or die "$!\n";
#Parser
my $parser = HTML::Parser->new(start_h => [\&start_rtn,"tag, attr"],
text_h => [\&text_rtn, "text"],
end_h => [\&end_rtn, "tag"]);
sub start_rtn {
# Execute when start tag is encountered
my ($tag, $attr) = @_;
if ($tag =~ /^title$/){
print "On a trouvé la balise : $tag \n";
$flag = 1;
}
if ($tag =~ /^td$/ && $attr->{class} =~ /^fieldName$/){ #Il y en a 2
print "On a trouvé la balise : $tag \n";
print "L'attribut dans cette balise est : $attr->{class}\n";
$flag = 2;
}
if ($tag =~ /^td$/ && $attr->{class} =~ /^fieldValue$/){ #Il y en a 2
print "On a trouvé la balise : $tag \n";
print "L'attribut dans cette balise est : $attr->{class}\n";
$flag = 3;
}
if ($tag =~ /^h3$/ && $attr->{class} =~ /^noTopPad$/){
print "on a trouvé la balise : $tag \n";
print "$attr->{class}\n";
$flag = 4;
}
if ($tag =~ /^a$/ && $attr->{href} =~ /^\/do\/serve\?objId=PA448500&objCls=Drug$/){
print "on a trouvé la balise : $tag \n";
print "$attr->{href}\n";
$flag = 5;
}
if ($tag =~ /^h3$/){
print "on a trouvé la balise : $tag \n";
$flag = 6;
}
if ($tag =~ /^a$/ && $attr->{href} =~ /^\/do\/serve\?objId=PA444517&objCls=Disease$/){
print "on a trouvé la balise : $tag \n";
print "$attr->{href}\n";
$flag = 7;
}
if ($tag =~ /^a$/ && $attr->{href} =~ /^\/do\/serve\?objId=PA447159&objCls=Disease$/){
print "on a trouvé la balise : $tag \n";
print "$attr->{href}\n";
$flag = 8;
}
}
sub text_rtn {
my ($text) = @_;
if ($flag == 1){
print "on a flag : $flag \n";
print "Le titre de cette page est : $text \n";
}
if($flag == 2){
print "on a flag : $flag \n";
print "On cherche => $text \n";
}
if($flag == 3){
print "on a flag : $flag \n";
print "Les alternatives recherchées sont : $text \n";
}
if($flag == 4){
print "on a flag : $flag \n";
print "$text \n";
}
if($flag == 5){
print "on a flag : $flag \n";
print "Un médicament relatif à ce gène est : $text \n";
}
if($flag == 6){
print "on a flag : $flag \n";
print "$text \n";
}
if($flag == 7){
print "on a flag : $flag \n";
print "Une maladie relative à ce gène est : $text \n";
}
if($flag == 8){
print "on a flag : $flag \n";
print "Une maladie relative à ce gène est : $text \n";
}
}
sub end_rtn {
my ($tag) = @_;
if ($tag =~ /^\/title$/){
print "On a fini par la balise : $tag \n";
$flag = 0;
}
if ($tag =~ /^\/td$/ && ($flag==2 || $flag==3)){
print "on a fini par la balise : $tag \n";
$flag = 0;
}
if ($tag =~ /^\/h3$/ && ($flag==4 || $flag==6)){
print "on a fini : $tag\n";
$flag = 0;
}
if ($tag =~ /^\/a$/ && ($flag==5 || $flag==7 || $flag==8)){
print "on a fini : $tag\n";
$flag = 0;
}
}
#start parsing
$parser->parse_file($fh);
#end parser
$parser ->eof; |
La ligne 34 => if ($tag =~ /^td$/ && $attr->{class} =~ /^fieldName$/){
ligne 40 => if ($tag =~ /^td$/ && $attr->{class} =~ /^fieldValue$/){
ligne 46 =>if ($tag =~ /^h3$/ && $attr->{class} =~ /^noTopPad$/){
ligne 52 => if ($tag =~ /^a$/ && $attr->{href} =~ /^\/do\/serve\?objId=PA448500&objCls=Drug$/){
ligne 63 => if ($tag =~ /^a$/ && $attr->{href} =~ /^\/do\/serve\?objId=PA444517&objCls=Disease$/){
ligne 69 => if ($tag =~ /^a$/ && $attr->{href} =~ /^\/do\/serve\?objId=PA447159&objCls=Disease$/){
Ce serait peut-être un problème d'initialisation dans mon tableau : my ($tag, $attr) = @_;
Je ne sais pas comment y remédier...
Merci pour vos commentaires