У меня возникла проблема при сравнении результата из подпрограммы file_md5_hex( $dir )
со строкой, считанной из файла.Когда я печатаю, они оба одинаковы, но когда я сравниваю их, если я получаю все время равными, независимо от значения, которое они имеют.
elsif ( -f $dir )
{
if($dir ne "$mydir.txt" && $dir ne "log.txt")
{
my $filename = "$mydir.txt";
open(my $fh, '<:encoding(UTF-8)', $filename)
or die "Could not open file '$filename' $!";
print FILE "$dir -> ";
while (my $row = <$fh>)
{
chomp($row);
if($row eq $dir)
{
my $hash = <$fh>;
chomp($hash);
print FILE "$hash = ";
break;
}
}
close $fh;
my $md5 = file_md5_hex( $dir );
print FILE "$md5\n";
print FILE ref($md5);
print FILE ref($hash);
if( $md5 eq $hash )
{
print FILE "Hash ok!\n";
}
else
{
print FILERESULT "In $mydir file $dir is corrupted. Correct is $hash, calculated is $md5\n";
print FILE "Hash Nok!\n";
}
}
}
В файле журнала я вижу, что 2 значения $md5
и $hash
одинаковы или различны (в зависимости от моделируемого случая), но когда я проверяю, программа видит их как всегда равные,Я думаю, что могут быть проблемы с типами данных, но я не знаю, как это исправить.