diff options
-rw-r--r-- | cpanfile | 1 | ||||
-rw-r--r-- | lib/AniDB/Hashing.pm | 17 | ||||
-rw-r--r-- | lib/AniDB/Manager.pm | 2 |
3 files changed, 19 insertions, 1 deletions
@@ -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) { |