Supprimer valeure d'un tableau contenant des hash [PERL] - Perl - Programmation
Marsh Posté le 16-12-2011 à 12:17:19
Bonjour,
La manière standard:
Parcourir l'array et tester chaque élément pour avoir l'indice de l'élément à retirer
Quand il est trouvé, appeller splice avec cet indice: splice(@array, $indextoremove,1);
ne convient pas?
A+,
Marsh Posté le 16-12-2011 à 15:30:00
Je vois bien comment parcourir le tableau:
Code :
|
Mais je ne sais pas quoi mettre a la place de $indextoremove.
J'ai essayé avec:
Code :
|
mais ça ne fonctionne pas.
Je ne vois pas comment récupérer cette valeur vu que mon tableau ressemble a:
Code :
|
Marsh Posté le 16-12-2011 à 20:47:18
A priori, quelque chose comme ceci:
my $ID_inFork = "8";
my @indextoremove = ();
foreach my $row_inFork (0..$#tabProc_temp) {
push(@indextoremove, $row_inFork) if ($tabProc_temp[$row_inFork]->{ID_PROCESS} == $ID_inFork )
}
foreach ((reverse @indextoremove)) {
splice(@tabProc_temp, $_, 1);
}
Un tableau pour collecter les indices a supprimer
Un parcours du tableau par indice croissant avec collecte des indices à supprimer
Une inversion du tableau pour retirer par ordre décroissant, sinon, les indices collectés ne vont plus être bons pour splice dès qu'il a été appliqué une fois.
Le retrait des éléments du tableau.
Au cas ou l'on sait qu'il n'y a au plus qu'une seule valeur d'indice à retirer, ça peut se simplifier.
A+,
Marsh Posté le 19-12-2011 à 11:09:27
Merci Gilou!
Ton code fonctionne parfaitement. Comme je l'esperai, ça a permis de supprimer une erreure qui arivait de temps en temps a savoir: si je mettai un sleep a 1 (pour simuler le lancement d'un job) la hiérarchisation ne fonctionnait plus.
Encore merci !
Cordialement,
Benjamin Pleumeckers.
Pour les curieux, voici le code:
Code :
|
Marsh Posté le 19-12-2011 à 11:48:01
Excellent!
C'était codé sans visibilité (je suis sous un environnement Windows ou certains modules ne sont pas disponibles) et je ne pouvais donc pas tester ce code.
A+,
Marsh Posté le 16-12-2011 à 12:09:19
Bonjour,
J'ai un tableau (@tabProc_temp) qui est construit comme ceci:
Mon probleme est que je ne trouve pas comment supprimer un des élément de ce tableau en fonction de la valeure de "'ID_PROCESS' => 'x',".
Par exemple, je voudrai supprimer seulement l’élément qui a pour "ID_PROCESS":8.
Le résultat serait donc:
Avez vous une idée pour faire cela?
Merci,
Cordialement,
Benjamin.
Message édité par Super_carotte le 16-12-2011 à 12:11:14