这是工作流程。
两个MD5哈希值永远不匹配。但是,当我将XML文件复制到我的Windows机器并运行在Windows中运行的相同Perl脚本时,我得到的答案与它们的MD5文件相同。
谁能告诉我发生了什么?
这是我用来计算MD5哈希的脚本。
use warnings;
use strict;
use Digest::MD5;
my $fname = "MarketPricePoint_2013_07_16_1500.xml";
open (my $fh, '<', $fname) or die "Can't open '$fname': $!";
binmode ($fh);
my $hash = Digest::MD5->new->addfile($fh)->hexdigest;
print $hash;
答案 0 :(得分:2)
ASCII模式是执行行结尾静默转换的FTP服务器的常见默认设置。如果始终无法以二进制模式进行传输,请考虑对行结尾进行标准化,如下所示。
use strict;
use warnings;
use Digest::MD5;
my $fname = "MarketPricePoint_2013_07_16_1500.xml";
open (my $fh, '<', $fname) or die "$0: open $fname: $!";
binmode ($fh) or die "$0: binmode: $!";;
(my $data = do { local $/; <$fh> }) =~ s/\r\n/\n/g;
my $hash = Digest::MD5->new->add($data)->hexdigest;
print $hash, "\n";