【问题标题】:How to use Perl Digest::xxHash to calculate hash of a file如何使用 Perl Digest::xxHash 计算文件的哈希值
【发布时间】:2021-07-29 07:13:52
【问题描述】:

https://metacpan.org/pod/Digest::xxHash 展示了如何计算字符串的哈希值。

my $hex_64  = xxhash64_hex( $data, $seed );

如何使用该模块快速计算大文件的哈希?

【问题讨论】:

  • 将整个文件读入字符串(使用File::SlurperPath::Tiny等)。散列。
  • 那些绑定不完整。它们不为数据的增量更新提供绑定。底层的xxhash 库本身支持它。您可能需要编写自己的绑定或寻找另一个可以提供它的库。
  • File::Map 可能会有所帮助。您根本不需要读入数据,因为它保留在磁盘上。

标签: perl hash


【解决方案1】:

感谢 brian d foy 提供的解决方案:

use Digest::xxHash;
use File::Map 'map_file';
map_file my $data, $file, '+<';
my $seed;
my $hex_64 = xxhash64_hex( $data, $seed );

这个大文件可能有 GB 大小,所以我不想像这样把它塞进内存:

use Digest::xxHash;
sysopen my $fh, $file, 0 or die;
my $data = do { local $/; <$fh> };
my $seed;
my $hex_64 = xxhash64_hex( $data, $seed );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-17
    • 2010-10-20
    • 2011-11-05
    • 2017-05-07
    • 2020-03-20
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    相关资源
    最近更新 更多