Bonjour,
Je cherche à attribuer à un objet "Mapage" une liste des liens qu'elle comporte.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 package Mapage; sub new { my ($class,$url) = @_; my $this = {}; bless($this, $class); $self->{MECHANIZE} = undef; $self->{URI_LINKS} = []; # Voici la liste que je souhaite remplir }
Et une methode de cette classe "extract_all_url", récupére la page, et les liens.
Mais comment faire pour que mon objet , contient une liste d'objet de la classe URI (module CPAN URI)
Bref mon code génére une erreur ,
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 sub extract_all_url() { use WWW::Mechanize::Link; my $self = shift; my $i = 0; my @t = undef; foreach my $link ( $self->{MECHANIZE}->links) { use URI; my $s = URI->new($link->url_abs); # Je converti mon link pour le package URI. next if !defined($s); my $link_uri = URI->new($s); push(@t,$link_uri); #MARCHE PAS push( @{$self->{URI_LINKS}} , $link_uri ); #MARCHE PAS $i++; } map {push (@t , @{$_});} @{$self->{URI_LINKS}}; map {print "$_\n"} @{$self->{URI_LINKS}}; return $i; #Renvooie le nombre de lien retenu }
Une solution ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Not an ARRAY reference at Mapage.pm line 164 (#1) (F) Perl was trying to evaluate a reference to an array value, but found a reference to something else instead. You can use the ref() function to find out what kind of ref it really was. See perlref. Uncaught exception from user code: Not an ARRAY reference at Mapage.pm line 164. at Mapage.pm line 164 Mapage::extract_all_url('Mapage=HASH(0x2a9686c)') called at Mapage.pm line 32
Merci d avance,
Partager