2010-02-11 4 views
4

Si je fais ce qui suit, il fonctionne très bien:Comment copier un tableau en utilisant une référence en Perl?

print $ref->{element}->[0]->{data}; 

Je voudrais voir combien de références sont dans le tableau afin que je puisse en boucle à travers eux, mais j'ai du mal à faire cela.

Voici le code que je l'ai essayé, mais il ne fonctionne pas:

my @array = @$ref->{element}; 

foreach(@array) { 
    print $_->{data}; 
} 

Je reçois un « Pas une référence MATRICE » erreur

+1

Vous pourriez trouver ** perldoc perldsc ** http://perldoc.perl.org/perldsc.html utile. En outre, le ** Référence rapide Références ** à Perlmonks est très pratique aussi: http://www.perlmonks.org/?node_id=69927 – daotoad

Répondre

8

Les hachages de listes sont délicats de cette façon. @$ref->{element} est analysé comme (@$ref)->{element}, déréférencé $ref au lieu de $ref->{element}.

Essayez

my @array = @{$ref->{element}} 

ou

my $size = scalar @{$ref->{element}} 

Les détails sordides dans perllol.

+0

Merci, ça marche super! – Jeremey

+0

Techniquement, vous n'avez pas besoin d'utiliser scalar pour obtenir la longueur, mais je le laisserais probablement dedans. –

-2

En tant que l'aide générale dans le débogage, donnent Data::Dumper une Regardez. C'est inestimable pour piquer dans les entrailles des structures de données.

+0

J'utilise cela, mais cela me dit seulement qu'il y a un tableau là (qui est comment je sais ça). Comme je peux accéder à ce tableau et imprimer des valeurs plus bas, je sais que ce n'est pas le problème. Ce dont j'ai besoin, c'est d'être en mesure de parcourir ce tableau. – Jeremey

Questions connexes