Bonjour,
J'ai un soucis sur ce morceau de perl issu de mon programme :
Code :
- open(my $fh, "<", $this->get('file_datas')) or die("Error: can't open ".$this->get('file_datas')."\n" );
-
- my $row = $csv->getline($fh);
- my @columns = @{$row};
- my $i = 0;
- while($row = $csv->getline($fh)) {
-
- my %line;
-
- my $j = 0;
-
- foreach(@{$row}) {
-
- $line{$columns[$j]} = $_;
-
- $j++;
-
- }
- # Et la je fais qq chose avec %lines
- }
|
Pour simplifier ce code j'aimerai soit savoir s'il existe une methode de l'objet CSV qui renvoi directement un tableau Hash avec les clefs issu de la premières lignes du CSV. (J'en doute).
Soit savoir si on peut comme en PHP construire un tableau associatif a partir de deux tableaux (un contenant les clefsn l'autre les valeurs), comme je fais là mais en une seule fonction peut-être déjà existante.
Pour l'instant j'ai essayé pour soulager cette portion en déportant la création de ce hash dans une fonction dont voici la tête :
Code :
- sub get_csv_line {
- my ($this, @columns, $row) = @_;
-
- my %line;
-
- my $i = 0;
- foreach(@{$row}) {
-
- $line{$columns[$i]} = $_;
-
- $i++;
-
- }
-
- return %line;
-
- }
|
Et dans cette fonction ce que je ne comprend c'est que si je fais un foreach sur @columns, je trouve dans la dernière case la référence vers le tableau "row".
Auriez vous quelques conseils ?
Merci d'avance?
Yellu
Message édité par yellu le 09-12-2008 à 12:28:41