Bonjour,
Toujours dans le cadre de mon projet de récupération de config d'équipement, je dois récupérer la liste Hardware et Software qui se trouve sur l'équipement.
Comme celui-ci n'est joignable qu'en HTTP (pas de telnet ni ssh, vieil équipement...), j'utilise HTML:: Parser une fois la page récupérée.
la page récupérée est du style:
Mon code est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <table width="100%" border="0"> <tr><a name="shelf"></a><th class="entete"><!--b-->SHELF<!--e--></th></tr> <tr><td><pre class="spacePre">CTRL Code (selected):251252663-bd CTRL Code (reserve):251252663-au FPGA (selected):251252650-bb FPGA (reserve):251252650-ao GIG-E Code (selected):251464672-ae GIG-E Code (reserve):251464672-ad <br></pre></td></tr> </table>
J'ai juste un warning au lancement du script:
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 # creation de mon parser my $parser = HTML::Parser->new(); # definition des mes evenements $parser->handler( text => sub { print shift."\n\n" if $i; }, "text" ); <= ici est le warning $parser->handler( start => sub { $i++ if shift eq 'table'; }, "tagname" ); $parser->handler( end => sub { $i-- if (shift eq 'table' and $i); } , "tagname" ); $req = HTTP::Request->new(GET => "$host/invmsoft.htm"); # execute la requete et recoit la reponse $res = $ua->request($req); die $res->status_line if not $res->is_success; $parser->parse_file($res->content); #print $res->content;
Lorsque je décommente la dernière ligne du code donné, j'ai bien le code HTML de ma page, pas de souci. et d'ailleurs, afin de valider mon code et mes données, lorsque je décommente toujours, et que je redirige la sortie du script vers un fichier, pour le lire via un autre script, je n'ai aucun souci..
Code : Sélectionner tout - Visualiser dans une fenêtre à part Warning: Use of "shift" without parentheses is ambiguous
code du deuxième script:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $ ./LWP_HTTP_2500.pl monHost > monHost_soft Warning: Use of "shift" without parentheses is ambiguous at ./LWP_HTTP_2500.pl line 68. $ ./PARSER_HTML_2500.pl monHost_soft Warning: Use of "shift" without parentheses is ambiguous at ./PARSER_HTML_2500.pl line 20.
Du coup, serait-ce le warning qui poserait problème?
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 #!/usr/bin/perl use strict; use warnings; use HTML::Parser; use Data::Dumper; die ("Usage: $0 <n>\n") if ( !defined ($ARGV[0]) ); my $i= 0; my $nb = 0; my $page = $ARGV[0]; # creation de mon parser my $parser = HTML::Parser->new(); # definition des mes evenements $parser->handler( text => sub { print shift."\n\n" if $i; }, "text" ); $parser->handler( start => sub { $i++ if shift eq 'table'; }, "tagname" ); $parser->handler( end => sub { $i-- if (shift eq 'table' and $i); } , "tagname" ); $parser->parse_file($page);
Merci d'avance,
Partager