OVH Cloud OVH Cloud

incompréhensible!

3 réponses
Avatar
julien
Bonjour
J'ai une erreur dans mon programme, et je ne comprends absolument pas
pouquoi.
Lors de l'utilisation de la sous-fonction suivante, une erreur intervient:

sub links_int {
my $html=shift;
my $url=shift;
my %links;

my $i=0;
while ($i<@$html) {
#print "$$html[$i]\n";
if ($$html[$i]=~/\.body.*(\.a\[title\]|\.a\[href\])=/i) {
print "lien trouvé->$$html[$i]\n";
my $href;
my $title="";
my $link;

do {
my @temp=split(/=/,$$html[$i]);
$i++;
}
until ($$html[$i-1]=~/\.body.*\.a=/i);

}
$i++;
}

return %links;
}

J'ai le message d'erreur suivant:
Use of uninitialized value in split at ./principal.pl line 682, <FILE>
line 39.
La ligne 682 correspond à do {, la ligne 3ç correspond à un commentaire
(pas d'opération)! Et le plus incompréhensible pour moi, c'est que
l'erreur disparait si je supprime le $i++ dans le bloc do {}.

Je ne comprends pas du tout le message d'erreur dans ce cas. Cela
peut-il être lié à une autre partie de mon programme?

Merci pour l'aide.
Julien

3 réponses

Avatar
Adrien Constant
perl -w
links_int("<html>n<head><title>bla</title></head>n<body><a
href='http://google.fr'>google</a></body>n</html>");

Compile sans warning perl v5.8.0 built for i386-linux-thread-multi.
Sinon :
$$html :non recommandé surtout si tu veux use strict

Il existe aussi un module qui parsera bcp mieux du HTML (me rapl plus le
nom surement HTML::Parser ou dans le genre).


julien wrote:
Bonjour
J'ai une erreur dans mon programme, et je ne comprends absolument pas
pouquoi.
Lors de l'utilisation de la sous-fonction suivante, une erreur intervient:

sub links_int {
my $html=shift;
my $url=shift;
my %links;

my $i=0;
while ($i<@$html) {
#print "$$html[$i]n";
if ($$html[$i]=~/.body.*(.a[title]|.a[href])=/i) {
print "lien trouvé->$$html[$i]n";
my $href;
my $title="";
my $link;

do {
my @temp=split(/=/,$$html[$i]);
$i++;
}
until ($$html[$i-1]=~/.body.*.a=/i);

}$$html
$i++;
}

return %links;
}

J'ai le message d'erreur suivant:
Use of uninitialized value in split at ./principal.pl line 682, <FILE>
line 39.
La ligne 682 correspond à do {, la ligne 3ç correspond à un commentaire
(pas d'opération)! Et le plus incompréhensible pour moi, c'est que
l'erreur disparait si je supprime le $i++ dans le bloc do {}.

Je ne comprends pas du tout le message d'erreur dans ce cas. Cela
peut-il être lié à une autre partie de mon programme?

Merci pour l'aide.
Julien



Avatar
julien
Adrien Constant wrote:
perl -w
links_int("<html>n<head><title>bla</title></head>n<body><a
href='http://google.fr'>google</a></body>n</html>");

Compile sans warning perl v5.8.0 built for i386-linux-thread-multi.
Sinon :
$$html :non recommandé surtout si tu veux use strict

Il existe aussi un module qui parsera bcp mieux du HTML (me rapl plus le
nom surement HTML::Parser ou dans le genre).
Bonjour

$html est en fait une référence à un tableau correspondant à du html
parsé (tag=text). L'appel à la la sous-fonction est fait par:
my %links=links_int(@parse,$row[0]);

Ce que je ne comprends pas, c'est que le message d'erreur n'a aucun ses:
il dit que l'erreur est dand "do {" à cause d'une mauvaise valeur dans
un split qui n'est pas à cettte ligne!

Julien

julien wrote:

Bonjour
J'ai une erreur dans mon programme, et je ne comprends absolument pas
pouquoi.
Lors de l'utilisation de la sous-fonction suivante, une erreur
intervient:

sub links_int {
my $html=shift;
my $url=shift; my %links; my $i=0;
while ($i<@$html) {
#print "$$html[$i]n";
if ($$html[$i]=~/.body.*(.a[title]|.a[href])=/i) {
print "lien trouvé->$$html[$i]n";
my $href;
my $title="";
my $link;

do { my @temp=split(/=/,$$html[$i]);
$i++;
}
until ($$html[$i-1]=~/.body.*.a=/i);

}$$html
$i++;
}
return %links;
}

J'ai le message d'erreur suivant:
Use of uninitialized value in split at ./principal.pl line 682, <FILE>
line 39.
La ligne 682 correspond à do {, la ligne 3ç correspond à un
commentaire (pas d'opération)! Et le plus incompréhensible pour moi,
c'est que l'erreur disparait si je supprime le $i++ dans le bloc do {}.

Je ne comprends pas du tout le message d'erreur dans ce cas. Cela
peut-il être lié à une autre partie de mon programme?

Merci pour l'aide.
Julien






Avatar
julien
Adrien Constant wrote:
perl -w
links_int("<html>n<head><title>bla</title></head>n<body><a
href='http://google.fr'>google</a></body>n</html>");

Compile sans warning perl v5.8.0 built for i386-linux-thread-multi.
Sinon :
$$html :non recommandé surtout si tu veux use strict

Il existe aussi un module qui parsera bcp mieux du HTML (me rapl plus le
nom surement HTML::Parser ou dans le genre).
Bonjour

$html est en fait une référence à un tableau correspondant à du html
parsé (tag=text). J'utilise use strict et use warnings dans mon programme.

L'appel à la la sous-fonction est fait par:
my %links=links_int(@parse,$row[0]);

Ce que je ne comprends pas, c'est que le message d'erreur n'a aucun ses:
il dit que l'erreur est dand "do {" à cause d'une mauvaise valeur dans
un split qui n'est pas à cettte ligne!

Julien

julien wrote:

Bonjour
J'ai une erreur dans mon programme, et je ne comprends absolument pas
pouquoi.
Lors de l'utilisation de la sous-fonction suivante, une erreur
intervient:

sub links_int {
my $html=shift;
my $url=shift; my %links; my $i=0;
while ($i<@$html) {
#print "$$html[$i]n";
if ($$html[$i]=~/.body.*(.a[title]|.a[href])=/i) {
print "lien trouvé->$$html[$i]n";
my $href;
my $title="";
my $link;

do { my @temp=split(/=/,$$html[$i]);
$i++;
}
until ($$html[$i-1]=~/.body.*.a=/i);

}$$html
$i++;
}
return %links;
}

J'ai le message d'erreur suivant:
Use of uninitialized value in split at ./principal.pl line 682, <FILE>
line 39.
La ligne 682 correspond à do {, la ligne 3ç correspond à un
commentaire (pas d'opération)! Et le plus incompréhensible pour moi,
c'est que l'erreur disparait si je supprime le $i++ dans le bloc do {}.

Je ne comprends pas du tout le message d'erreur dans ce cas. Cela
peut-il être lié à une autre partie de mon programme?

Merci pour l'aide.
Julien