Alimentation d'une variable avec données d'un tableau

Alimentation d'une variable avec données d'un tableau - Perl - Programmation

Marsh Posté le 23-03-2011 à 16:11:09    

Bonjour,
 
J'ai un tableau contenant des noms de fichiers. Je voudrais mettre ces noms de fichiers dans une variable ceci afin d'envoyer par mail le contenu de cette variable.
Je n'arrive pas à trouver la soluce car je me retouve avec des doublons en utilisant la concaténation
Explication;

Code :
  1. #Tableau @tab_error contient les valeurs titi toto et tata
  2. foreach (@tab_error){
  3.   $var = $var . $_ . "\n";
  4. }
  5. print $var;
  6. }


J'obtient donc :
TITI
TOTO
TITI
TOTO
TATA
 
Alors que je veux juste :
TITI
TOTO
TATA
 
Au secour!!!
 
merci d'avance

Reply

Marsh Posté le 23-03-2011 à 16:11:09   

Reply

Marsh Posté le 23-03-2011 à 19:43:46    

Chez moi, ça marche:

Code :
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4.  
  5. my @tab_error = qw(TITI TOTO TATA);
  6. my $var = "";
  7. foreach (@tab_error){
  8.  $var = $var . $_ . "\n";
  9. }
  10. print $var;


TITI
TOTO
TATA


Donc a la base, le probleme est ailleurs, dans le remplissage de ton tableau.
De toute façon, la bonne méthode pour imprimer le contenu d'un tableau, c'est d'utiliser join:

Code :
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4.  
  5. my @tab_error = qw(TITI TOTO TATA);
  6. print join("\n", @tab_error);
  7. # ou print join("\n", @tab_error), "\n"; si on veut un retour a la ligne final.


A+,


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

Marsh Posté le 23-03-2011 à 19:53:41    

Tant qu'on y est, pour virer les doublons d'un array, sans modifier l'ordre des elements, on utilise uniq, du module List::MoreUtils (a installer, s'il ne l'est pas, car en général ce module n'est pas dans les installations basiques)
 

Code :
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4.  
  5. use List::MoreUtils qw(uniq);
  6.  
  7. my @tab_error = qw(TITI TOTO TATA TITI TUTU TATA TOTO);
  8. print join("\n", uniq(@tab_error));


TITI
TOTO
TATA
TUTU


A+,


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

Sujets relatifs:

Leave a Replay

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