Lut, j'ai un petit problème avec un string et je n'arrive pas a m'en débarasser, je me suis renseigné sur l'erreur suivante
sur le site http://perl.enstimac.fr/DocFr/perldiag.html.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Can't use string ("text/html") as an ARRAY ref while "strict refs" in use at C:\Documents and Settings\vod_evil\Bureau\nod\5.pl line 422.
Mais je n'arrive pas a régler mon problème, voila ce que me dit perl :
tout vas bien puis d'un coup j'ai cette erreurtext/html; charset=iso-8859-1
text/html
text/html
Can't use string ("text/html") as an ARRAY ref while "strict refs" in use at C:\Documents and Settings\Teddy\Bureau\nod\5.pl line 422.![]()
Mon code étant top long je ne peut pas tout mettre ici:
Je fait mes requetes http grace a cette fonction
puis je déréférence le hash de retour comme ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 sub get_http_request { my $request = HTTP::Request->new('GET', $_[0]); my $res = $ua->request($request); LWP::Debug::trace("$res"); return $res; }
pour la suite de mon prgramme je crée une nouvelles référence
Code : Sélectionner tout - Visualiser dans une fenêtre à part my %wl = (%$lwp);
que j'envoie a un sous programme comme ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part my $wp = \%wl;
Code : Sélectionner tout - Visualiser dans une fenêtre à part my @donnes = build_data($wp);
qui renvoie un tableau contenant le code de la page etc...
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 sub build_data { my $res = shift; my $url = $res->{'_request'}{'_uri'}; my $code = $res->{'_content'}; my $verbose = robot_tag($code); my $date = date(); my $base = $url; # Récupération de la taille du document my $size = $res->{'_headers'}{'content-length'}; if ( !$size ) { $size = 0; } elsif ( $size ne "0" || "undef" ) { $size /= 1024; $size = substr($size, 0, 4); } else { $size = 0; } my $content_type= ctype($res->{'_headers'}{'content-type'}[0]); my $revisit = revisit_tag($code); # On cherche si le document a un header last-modified my $last_modified; unless ( !$res->{'_headers'}{'last-modified'} ) { $last_modified = http_date($res->{'_headers'}{'last-modified'}); } else { $last_modified = "default"; } return "$verbose","$code","$date","$url","$size","$content_type","$revisit","$last_modified"; }
Mon problème ce situe icima fonction ctype sert juste a tronquer le header content_type s'il est de la forme
Code : Sélectionner tout - Visualiser dans une fenêtre à part my $content_type= ctype($res->{'_headers'}{'content-type'}[0]);
Code : Sélectionner tout - Visualiser dans une fenêtre à part text/html; charset=iso-8859-1
voila
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 sub ctype { my $cp = shift; if ( $cp =~ /;/ ) { $cp =~ s/;(.*)//; } return $cp; }
Merci de votre aide[/url]
Partager