Les tableaux
Résolu
Bonjour,
Je travaille sur du Perl en ce moment puisque j'en ai besoin pour mes futurs cours mais j'ai une question.
Est ce que "Foreach" fonctionne pour afficher un tableau à plusieurs entrés ? Exemple
Quand j’exécute ce programme j'ai cette erreur : "ARRAY(0xe5b358)ARRAY(0xe5b508)ARRAY(0xd047f8)"
Il y a surement une autre façon de faire non ?
Merci d'avance
--
Un peu d'aide contre un topic résolu !
Je travaille sur du Perl en ce moment puisque j'en ai besoin pour mes futurs cours mais j'ai une question.
Est ce que "Foreach" fonctionne pour afficher un tableau à plusieurs entrés ? Exemple
use strict;
use warnings;
my @noms = (
[ "fred", "barney" ],
[ "george", "jane", "elroy" ],
[ "homer", "marge", "bart" ],
);
foreach my $n (@noms) {
print $n;
}
<>
Quand j’exécute ce programme j'ai cette erreur : "ARRAY(0xe5b358)ARRAY(0xe5b508)ARRAY(0xd047f8)"
Il y a surement une autre façon de faire non ?
Merci d'avance
--
Un peu d'aide contre un topic résolu !
1 réponse
-
ContributeurSalut,
Désolé de la réponse tardive.
Tu as un tableau qui contient 3 tableaux. Les 3 éléments qui sont affichés par ta boucle sont des références à ces tableaux.
Pour afficher les tableaux pointés par ces références, il suffit d'utiliser l'opérateur @ pour les déréférencer et de faire un foreach sur chaque tableau.
Comme cela :
#!/usr/bin/perl use strict; use warnings; my @noms = ( [ "fred", "barney" ], [ "george", "jane", "elroy" ], [ "homer", "marge", "bart" ], ); foreach my $n (@noms) { foreach my $o (@$n) { print $o . "\n"; } }
Alternativement, tu peux installer List::Flatten avec CPAN, et tu pourras "aplatir" une liste qu'elle contienne ou pas des tableaux dans tout ou partie de ses éléments (ou List::Flatten::Recursive si tu peux avoir des tableaux de tableaux de tableaux...).
Dal