From f04add3196ef9db8b1ae33af693f6d96e7ffe741 Mon Sep 17 00:00:00 2001 From: dakkar Date: Wed, 19 Oct 2016 16:27:45 +0100 Subject: hashing function --- cpanfile | 1 + lib/AniDB/Hashing.pm | 17 +++++++++++++++++ lib/AniDB/Manager.pm | 2 +- 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 lib/AniDB/Hashing.pm diff --git a/cpanfile b/cpanfile index b531a04..cf10cab 100644 --- a/cpanfile +++ b/cpanfile @@ -1,6 +1,7 @@ #!perl requires perl => '>=5.024'; requires 'experimental'; +requires 'Digest::ED2K'; requires 'Getopt::Long::Descriptive'; requires 'JSON::MaybeXS'; requires 'Log::Any'; diff --git a/lib/AniDB/Hashing.pm b/lib/AniDB/Hashing.pm new file mode 100644 index 0000000..6527756 --- /dev/null +++ b/lib/AniDB/Hashing.pm @@ -0,0 +1,17 @@ +package AniDB::Hashing; +use 5.024; +use strict; +use warnings; +use experimental 'signatures'; +use Digest::ED2K; +use namespace::clean; + +sub hash_fh($fh) { + my $digest = Digest::ED2K->new; + while (my $bytes_read = $fh->sysread($buffer,1024*1024)) { + $digest->add($buffer); + } + return $digest->hexdigest; +} + +1; diff --git a/lib/AniDB/Manager.pm b/lib/AniDB/Manager.pm index ee9d48e..a5c9686 100644 --- a/lib/AniDB/Manager.pm +++ b/lib/AniDB/Manager.pm @@ -50,7 +50,7 @@ has hash_function => ( sub _build_hash_function { require AniDB::Hashing; - return \&AniDB::Hashing::hash_fd; + return \&AniDB::Hashing::hash_fh; } sub new_name_for($self,$path) { -- cgit v1.2.3