我正在尝试做什么:
将文件及其md5哈希值存储到哈希中,在添加或删除文件时更改哈希值。
到目前为止,我能够存储md5哈希值并在添加文件时更新哈希值。 但是我不知道如何删除已删除文件的密钥
我的方法现在是:
my %files = map { $_ => 1 } @files;
if (%files ~~ %hash).. same.. else... different
我不确定如何进一步实现这一点。这是我的想法:
Where exists $hash{$_} && !exists $files{$_} delete $hash{$_}
答案 0 :(得分:4)
只需循环一个,然后检查是否存在并删除......
foreach my $k ( keys %file ) {
delete $hash{$k} if exists $hash{$k};
}
此外,由于内部使用哈希来实现此目的,因此最好将undef
分配给1
。为简单而保留的原因。
my %files = map { $_ => undef } @files;
我不确定条件是否会使它更快或更慢 - 这可能无关紧要。
答案 1 :(得分:2)
您无需创建哈希来比较列表。看看List::Compare。特别是,get_unique()和get_complement()方法将标识仅出现在两个列表之一中的项目。