Dex*_*ers 3 perl md5 file-comparison
我想运行一个代码,如果文件存在则继续检查文件是否退出,然后检查文件的MD5与之前的MD5.如果有一些变化,那么它会执行一些代码.但是每次我为同一个文件调用hexdigest时,perl MD%似乎都在变化.MD5每次都会改变吗?
我最初有
$md5 = Digest::MD5->new;
Run Code Online (Sandbox Code Playgroud)
之前 while(1)
如果不是这样做,还有什么可以实现我的意图吗?谢谢
while(1)
{
if(!(-e $config_file)){
next;
}else{
$md5 = Digest::MD5->new;
$md5->addpath($config_file);
print "<->";
print $md5->hexdigest;
$value=($digest eq $md5->hexdigest ? 1 : 0);
if($value==1)
{
next;
}else
{
$digest=$md5->hexdigest;
}
}
}
Run Code Online (Sandbox Code Playgroud)
hexdigest操作是一次性读取,这意味着在执行后,该值将被重置.它只能读取一次,但您尝试读取两次.第一次阅读时将其存储在临时状态.
从文档(我的重点):
$ MD5->消化
返回消息的二进制摘要.返回的字符串长度为16个字节.
请注意,摘要操作实际上是一种破坏性的一次性操作.一旦执行,Digest :: MD5对象将自动重置,并可用于计算另一个摘要值.如果要在不重置摘要状态的情况下计算摘要,请调用$ md5-> clone-> digest.
$ MD5-> hexdigest
与$ md5-> digest相同,但将以十六进制形式返回摘要.返回字符串的长度为32,并且只包含此集合中的字符:'0'..'9'和'a'..'f'.