IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Une Liste d'objets comme attribut d'objet


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1
    Par défaut Une Liste d'objets comme attribut d'objet
    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)
    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
    }
    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
     
    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
    Une solution ?

    Merci d avance,

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Août 2008
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Août 2008
    Messages : 505
    Par défaut
    Je connais pas si bien que ça mechanize et j'ai pas trop envie de chercher.

    Mais moi, quand je ne comprends pas ce qui ne marche pas, je regarde quoi est dans quoi. Et j'utilise
    Data:umper;

    Et dans le cas présent, je ferais un et un petit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print Dumper($link_uri);
    Et juste une question. Est-ce que tu es sûr que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $self->{URI_LINKS} = [];
    n'initialise pas une référence à un tableau plutôt qu'un tableau, et qu'il ne faille pas écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $self->{URI_LINKS} = ();
    ?

    Sans certitude, mais je viens de lire un truc là dessus....

Discussions similaires

  1. Un objet comme attribut.
    Par djun1 dans le forum C++
    Réponses: 11
    Dernier message: 17/02/2013, 22h35
  2. [PHP 5.3] Création d'une liste élément et sous éléments en objet
    Par Nemesis007 dans le forum Langage
    Réponses: 3
    Dernier message: 02/08/2011, 18h57
  3. Passer un objet comme attribut d'une classe
    Par Leduc08 dans le forum Ext JS / Sencha
    Réponses: 1
    Dernier message: 05/04/2011, 11h54
  4. Réponses: 1
    Dernier message: 12/04/2010, 16h49
  5. Réponses: 1
    Dernier message: 29/09/2008, 16h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo