Erreur perl Can't use string ,
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
Code:
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.
sur le site http://perl.enstimac.fr/DocFr/perldiag.html.
Mais je n'arrive pas a régler mon problème, voila ce que me dit perl :
Citation:
text/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.
tout vas bien puis d'un coup j'ai cette erreur :twisted:
Mon code étant top long je ne peut pas tout mettre ici :roll: :
Je fait mes requetes http grace a cette fonction
Code:
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;
} |
puis je déréférence le hash de retour comme ceci
pour la suite de mon prgramme je crée une nouvelles référence
que j'envoie a un sous programme comme ceci
Code:
my @donnes = build_data($wp);
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
| 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";
} |
qui renvoie un tableau contenant le code de la page etc...
Mon problème ce situe ici
Code:
my $content_type= ctype($res->{'_headers'}{'content-type'}[0]);
ma fonction ctype sert juste a tronquer le header content_type s'il est de la forme
Code:
text/html; charset=iso-8859-1
Code:
1 2 3 4 5 6 7
| sub ctype {
my $cp = shift;
if ( $cp =~ /;/ ) {
$cp =~ s/;(.*)//;
}
return $cp;
} |
voila
Merci de votre aide[/url]
Re: Erreur perl Can't use string ,
Citation:
Envoyé par vodevil
Mon problème ce situe ici
Code:
my $content_type= ctype($res->{'_headers'}{'content-type'}[0]);
Et que se passe-t-il si tu mets juste :
Code:
1 2
|
my $content_type= ctype($res->{'_headers'}{'content-type'}); |
??
Par ailleurs, j'aimerais bien savoir pourquoi tu maltraites ton objet réponse en le déréférençant en un hash ?
--
Jedaï