我正在打开一个包含哈希的文件,并创建一个字符串,并将我的字符串设置为与哈希中该键的值相等,因此我可以将该字符串中的所有包含值包含在我的字符串中。我正在通过一个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
我想找到重复的值,在这种情况下为4353
,并从我的字符串变量$id
中删除它们,然后将$id
仅分配给那些未被复制的值。在这种情况下,7653, 5431, 8769
。因为我的标准对在重复ID上进行测试不感兴趣。我很难弄清楚如何跟踪重复的ID值并从字符串中删除它们,因为字符串处于foreach循环中。任何帮助或指导,我们将不胜感激。
答案 0 :(得分:0)
您说“从字符串变量中删除”,但您的意思似乎是“进行到循环的下一遍”。
my %seen;
for my $val (sort keys %hash) {
my $id = $hash{$val};
next if $seen{$id}++;
...
}