foreach sur array imbriqués

Le
Mihamina Rakotomandimby
Bonjour,
J'ai des Array de ce type:
#!/usr/bin/perl
use strict;
use warnings;

my @lignes=('r','d', 'a', 'o',);

my @extrait_fichier=(
('a', "dsforigje"),
('r', "dsvvc"),
('a', "vcxvcxvcx"),
('o', "fdods"),
('d', "vvcxvcvxczsz"),
('o', "qssssss"),
('o', "ddddddddddd"));

foreach my $lettre (@lignes)
{
foreach my $enreg (@extrait_fichier)
{
if ($lettre eq $enreg[0])
{
print $enreg[1];
}
}
}

C'est lié à mon problème de remise en ordre de fichier de log.
Le souci est que "$enreg" est un tableau.
Mais si je mets "@enreg", alors il dit qu'il lui manque le "$" qu'il
faut à tout "foreach".
Plutot que de demander comment résoudre mon problème en particulier, je
voudrais vou demander comment on fait pour foreach-er de manière
imbriquée des array d'array d'array de manière générale.

Merci d'avance


--
Huile Essentielle de Camphre http://www.huile-camphre.fr
Infogerance http://www.infogerance.us
(Serveurs, Postes de travail, Développement logiciel)
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Nicolas George
Le #1111704
Mihamina Rakotomandimby wrote in message
my @extrait_fichier=(
('a', "dsforigje"),
('r', "dsvvc"),
('a', "vcxvcxvcx"),
('o', "fdods"),
('d', "vvcxvcvxczsz"),
('o', "qssssss"),
('o', "ddddddddddd"));


Un « print "@extrait_fichiern" » (ou encore mieux : « use Data::Dumper;
print Dumper @extrait_fichier; ») te montrera que, contrairement à ce que
tu crois, ceci n'est pas un tableau de tableaux.

man perlreftut et perldsc pour la suite.

espie
Le #1112384
In article Mihamina Rakotomandimby
Bonjour,
J'ai des Array de ce type:
#!/usr/bin/perl
use strict;
use warnings;

my @lignes=('r','d', 'a', 'o',);

my @extrait_fichier=(
('a', "dsforigje"),
('r', "dsvvc"),
('a', "vcxvcxvcx"),
('o', "fdods"),
('d', "vvcxvcvxczsz"),
('o', "qssssss"),
('o', "ddddddddddd"));

foreach my $lettre (@lignes)
{
foreach my $enreg (@extrait_fichier)
{
if ($lettre eq $enreg[0])
{
print $enreg[1];
}
}
}

C'est lié à mon problème de remise en ordre de fichier de log.
Le souci est que "$enreg" est un tableau.
Mais si je mets "@enreg", alors il dit qu'il lui manque le "$" qu'il
faut à tout "foreach".
Plutot que de demander comment résoudre mon problème en particulier, je
voudrais vou demander comment on fait pour foreach-er de manière
imbriquée des array d'array d'array... de manière générale.


Les array contiennent forcement des scalaires. Mais une reference sur
un array est un scalaire, donc ca marche. C'est decrit de facon precise
dans perllol. (list of list).

Ca devient souvent confusant entre les array et les ref. Dans ce cas,
je prefere ne bosser que avec des ref. i.e.,

my $extrait_fichier=[
['a', "dsforigje"],
['r', "dsvvc"],
['a', "vcxvcxvcx"],
['o', "fdods"],
['d', "vvcxvcvxczsz"],
['o', "qssssss"],
['o', "ddddddddddd"]];

...

foreach my $enreg (@$extrait_fichier)
{
if ($lettre eq $enreg->[0])
{
print $enreg->[1];
}
}

Bonne chance pour la suite, c'est documente tres en detail dans la doc
standard... ;-)

Publicité
Poster une réponse
Anonyme