[Résolu] Création d'un tableau imbriqué à partir d'un tableau simple

Création d'un tableau imbriqué à partir d'un tableau simple [Résolu] - Perl - Programmation

Marsh Posté le 28-06-2011 à 11:14:36    

Salut,
 
Dans la continuité de mon topic précédent ...
Je cherche à créer un nouveau tableau imbriqué à partir d'un tableau simple, mais je bloque au niveau de la boucle.
 
J’ai donc mon tableau toto --> @toto
Qui contient n strings --> @toto = ( [tata;tbtb;tctc;tdtd]; [tete;tftf;tgtg;thth]; … );
J’aimerais spliter la string [tata;tbtb;tctc;tdtd] en un nouveau tableau @tztz, je me base sur le point-virgule comme séparateur --> push @tztz, [split(/;/, $toto[$i])];
Il faut donc que je boucle sur $i afin de lire chaque string et de la spliter et c’est là que je bloque … j’ai essayé while, for, foreach, do while, … soit ça tourne en infinite loop soit il boucle plusieurs fois sur le même élément.
 
Il faudrait faire une boucle dans les crochets de $toto[] mais je trouve ça dégueu.
Si je boucle avant le push il va me créer n fois le tableau @tztz et cela ça ne va pas.
@tztz sera un tableau imbriqué, alors que @toto en est un simple.
 

Code :
  1. @tztz (
  2.    [
  3.       ‘tata’,
  4.       ‘tbtb’,
  5.       ‘tctc’,
  6.       ‘tdtd’
  7.    ];
  8.    [
  9.       ‘tete’,
  10.       ‘tftf’,
  11.       ‘tgtg’,
  12.       ‘thth’
  13.    ];
  14. );


 
Au mieux j'arrive à cela, mais mon tableau est recréé à chaque tour de boucle avec son contenu précédent +1 :(.
 

Code :
  1. # Récupère le tableau passé en paramètre.
  2.    my @personnes = @_;
  3.    my @personnes2 = ();
  4.    # Split les éléments dans un nouveau tableau en se basant sur le ; comme délimiteur.
  5.    my $i;
  6.    for ($i=0;$i<=$#personnes;$i++)
  7.    {
  8.       push @personnes2, [split(/;/, $personnes[$i])];
  9.       print Dumper(@personnes2);
  10.    }


 
Comment faire ?
Merci pour votre aide :jap:.


Message édité par Gavrinis le 28-06-2011 à 17:44:11
Reply

Marsh Posté le 28-06-2011 à 11:14:36   

Reply

Marsh Posté le 28-06-2011 à 14:27:49    

J'ai pas du piger ce qui pose problème.

 

Si je fais ceci:

 


Code :
  1. #!$(which perl)
  2.  
  3. use strict;
  4. use warnings;
  5.  
  6. use Data::Dumper;
  7.  
  8. my @personnes = ();
  9. $personnes[0] = "nom;adresse;tel;apb";
  10. $personnes[1] = "nom1;adresse1;tel1;apb1";
  11.  
  12. my @persinfo;
  13.  
  14. foreach (@personnes) {
  15.  push @persinfo, [split(';', $_)];
  16. }
  17.  
  18. print Dumper(@persinfo);

J'obtiens:

C:\Perl>perl test.pl
$VAR1 = [
          'nom',
          'adresse',
          'tel',
          'apb'
        ];
$VAR2 = [
          'nom1',
          'adresse1',
          'tel1',
          'apb1'
        ];

Ce n'est pas ce que vous vouliez obtenir?

 

A+,


Message édité par gilou le 28-06-2011 à 14:31:45

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 28-06-2011 à 14:38:34    

Si, je viens à l'instant de trouver :sarcastic:.

 

J'ai honte [:arn0]

 


Merci ;)


Message édité par Gavrinis le 28-06-2011 à 14:38:50
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed