Perl: контрольная сумма сложной структуры данных
Есть ли в Perl пакет / функция, которая дает мне простой способ
- краткая информация (например, число, короткая строка)
- как хэш-значение / контрольная сумма (например, MD5)
- с хорошим различием (например, криптографический хеш, такой как MDx, SHAx)
- представляет содержание сложной структуры данных (например, хэш массивов хэшей).
Лучшая идея, которую я имею в виду,
сериализовать мою структуру в строку (например, с помощью Data::Dumper)
Хеш над строкой с MDx
Но, может быть, есть более элегантный способ.
2 ответа
В прошлом я использовал Data::Dumper (с отсортированными ключами, как указано @mob) + подход Digest::MD5 для создания контрольных сумм сложных структур данных. В моем случае целью было сравнить две или более структуры данных на предмет равенства.
(Очень) Простой фрагмент:
use Data::Dumper qw( Dumper ) ;
use Digest::MD5 qw( md5_hex) ;
sub digest {
my $data = shift ;
local $Data::Dumper::SortKeys = 1;
return md5_hex( Dumper($data) ) ;
}
Сводка:
my $cplx_data_checksum = digest({
c => 1 ,
b => [ 1 , { a => 2 } ]
}) ;
Для получения информации о скорости работы Digest algo, пожалуйста, обратитесь к модулю Digest Perl по адресу https://metacpan.org/pod/Digest.
Надеюсь это поможет
Я хотел бы рассмотреть возможность использования
Я использовал его для решения аналогичной проблемы и был очень доволен, он быстр, предлагает все варианты, которые мне могут понадобиться, и не заставил себя долго ждать.
Например, он позволяет вам выбирать, как обращаться с объектами и сортировать ли ключи по хешам, что может быть очень полезно.
Повеселись!