【发布时间】:2018-10-18 17:39:18
【问题描述】:
我正在打开一个包含散列的文件,并创建一个字符串,并将我的字符串设置为等于散列中该键的值,因此我可以在我的字符串中保存该散列键值的所有内容。我正在通过 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 循环中。非常感谢任何帮助或指导。
【问题讨论】:
-
始终使用
use strict; use warnings qw( all ); -
“文件中的哈希”是什么意思?文件包含字节,而不是数据结构!