【发布时间】:2013-12-05 22:46:27
【问题描述】:
我使用以下脚本来获取文件的 md5,它按预期工作:
use warnings;
use strict;
use Digest::MD5;
my $file = "$ARGV[0]";
open (my $fh, '<', $file) or die "Can't open '$file': $!";
binmode ($fh);
my $md5 = Digest::MD5->new->addfile($fh)->hexdigest;
print $file, "\n", $md5, "\n";
我想做的是使用上面的脚本,然后将 $md5 与另一个已知的 md5 进行比较。
编辑: 这个想法是检查某些预定义文件的有效性。我已经知道“好”文件的 md5,我只需要将已知的 md5 与从上述脚本中获得的 md5 进行比较。我只是不确定下一步该怎么做。
编辑 2:
我已经想出了如何使用push(@array, $filehandle); 将对象推送到数组中,现在我只需要使用预定义的 md5s 创建另一个数组,这引发了我的下一个问题,有没有办法查看array A 中的一个条目是否相同作为array B 中的ANY 条目?
编辑 3: 我已经想出了如何实际比较两个 md5 这样做:
use warnings;
use strict;
use Digest::MD5;
my $file = "$ARGV[0]";
my $file1 = "$ARGV[1]";
open (my $fh, '<', $file) or die "Can't open '$file': $!";
binmode ($fh);
open (my $fh1, '<', $file1) or die "Can't open '$file': $!";
binmode ($fh1);
my $md5 = Digest::MD5->new->addfile($fh)->hexdigest;
my $md51 = Digest::MD5->new->addfile($fh1)->hexdigest;
print "\n", $file, "\n", $md5, "\n", "\n", $file1, "\n", $md51, "\n";
if ($md5 eq $md51) {
print "\n", "The MD5's match perfectly", "\n";
} else {
print "\n", "The MD5's do NOT match", "\n";
}
但这会比较两个 args 的 md5。我需要弄清楚的是如何将 argv0 md5 与整个预定义 md5 数组进行比较。
【问题讨论】:
-
另外,我不确定将已知的 md5 存储到文件中还是将已知的 md5 合并到脚本本身会更好。任何有关实现此目标的最佳方法的见解将不胜感激。
-
您可以将 md5 摘要存储在 ie 中。
"$file.md5"文件