У меня есть некоторые странные результаты из этого кода Perl. Мне нужно удалить несколько элементов из списка объектов Ассоциации.Безопасный способ удаления элементов из списка на Perl?
Мой подход заключается в том, чтобы отсканировать список один раз, нажать совпадения на другой массив, затем перебрать этот массив и удалить каждый из них, но я не избежал «не удалять, итерации».
Любые идеи о том, как этого избежать? Большое спасибо.
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: Это то, что он уже делает: создание второго списка, содержащего элементы исходного списка, которые должны быть удалены, а затем итерации по копии. –