Нужно найти повторяющееся значение в строке в цикле foreach в Perl - PullRequest
0 голосов
/ 18 октября 2018

Я открываю файл, который содержит хэш, и создаю строку, и устанавливаю мою строку равной значению этого ключа в хэше, так что я могу хранить все содержимое этого значения ключа хеша внутри моей строки.Я запускаю это через foreach, поэтому я получаю каждое значение из хэша файла в мою строку:

open FN, '<', $file or die;

%hash = packageInt(); // this is the hash from the file I just opened above '$file'

foreach my $val (sort keys %hash) {

$id = $hash{$val}{id};

print "IDS: $id\n";


}

Когда я печатаю $ id, я получаю 5 значений:

4353
7653
5431
4353
8769

IЯ хочу найти значения, которые повторяются, в этом случае 4353 и УДАЛИТЬ их из моей строковой переменной $id, и переназначить $id только на те значения, которые не реплицируются.В этом случае 7653, 5431, 8769.Потому что мои критерии не заинтересованы в проведении тестов на дубликаты идентификаторов.Мне трудно понять, как отслеживать значения идентификаторов, которые являются дубликатами, и удалять их из строки, потому что строка находится в цикле foreach.Любая помощь или руководство с благодарностью.

1 Ответ

0 голосов
/ 18 октября 2018

Вы говорите «удалить из строковой переменной», но вы, похоже, имеете в виду «перейти к следующему проходу цикла».

my %seen;
for my $val (sort keys %hash) {
   my $id = $hash{$val};
   next if $seen{$id}++;

   ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...