Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

foreach sur array imbriqués

2 réponses
Avatar
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)

2 réponses

Avatar
Nicolas George
Mihamina Rakotomandimby wrote in message
<fpv8bj$1dqg$:
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.

Avatar
espie
In article <fpv8bj$1dqg$,
Mihamina Rakotomandimby wrote:
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... ;-)