Les tableaux [Résolu/Fermé]

Signaler
Messages postés
1221
Date d'inscription
mercredi 5 juin 2013
Statut
Membre
Dernière intervention
27 décembre 2017
-
Messages postés
5541
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 mai 2021
-
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

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


1 réponse

Messages postés
5541
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 mai 2021
933
Salut,

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
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci