У меня есть данные utf8, которые я передаю в DIGEST :: SHA следующим образом:
my $sha1=Digest::SHA->new;
foreach (@fields ) { $sha->add($record) }
print $sha1->hexdigest;
но я получаю неожиданное поведение, и каждый раз, когда я получаю другой дайджест для одной и той же записи, я читаю на http://metacpan.org/pod/Digest::SHA, что есть побочные эффекты использования Digest SHA с UTF8, я пробую следующее определение, но оба не работают:
{use bytes;
foreach (@fields ) { $sha->add($record) }
print $sha1->hexdigest;
}
и
use Encode qw(encode_utf8);
foreach (@fields ) { $sha->add((encode_utf8($record)) }
print $sha1->hexdigest;
любая помощь будет оценена по достоинству.
$recordи откуда оно взято, чтобы ответить на ваш вопрос. - person cjm   schedule 23.01.2014use bytes;. См. Его документы. /// Непонятно, какие две вещи генерируют разные хэши, так что здесь действительно нечего делать. - person ikegami   schedule 23.01.2014$record) в хеш-функцию один раз для каждого поля. Это должно быть$record{$_}? - person Rob Napier   schedule 23.01.2014