J'ai des résultats bizarres avec ce code perl - j'ai besoin de supprimer plusieurs éléments d'une liste d'objets Association.Manière sûre de supprimer des éléments d'une liste dans Perl?
Mon approche consiste à balayer la liste une fois, pousser les correspondances à un autre tableau, puis itérer ce tableau et supprimer chacune d'entre elles, mais je n'ai pas échappé au "ne pas supprimer pendant l'itération".
Des idées pour éviter cela? Merci beaucoup.
my @agentConfAssociationDeletionsList = (
"AcceptTPCookie",
"AgentNamesAreFQHostNames",
"BadCssChars",
"LogLocalTime"
);
#find associations to remove
my @associationsToRemove =();
foreach my $association ($agentConf->GetAssociations()) {
if (grep {$_ eq $association->Name()} @agentConfAssociationDeletionsList) {
print "pushing " . $association->Name() . "\n";
push(@associationsToRemove, $association);
}
}
#remove them
foreach my $association (@associationsToRemove) {
print "removing association: " . $association->Name();
agentConf->RemoveAssociation($association);
}
-1: C'est ce qu'il fait déjà: créer une deuxième liste contenant les éléments de la liste d'origine à supprimer, puis itérer sur la copie. –