Spaces:
Running
Running
package Digest::file; | |
use strict; | |
use warnings; | |
use Exporter (); | |
use Carp qw(croak); | |
use Digest (); | |
our $VERSION = "1.19"; | |
our @ISA = qw(Exporter); | |
our @EXPORT_OK = qw(digest_file_ctx digest_file digest_file_hex digest_file_base64); | |
sub digest_file_ctx { | |
my $file = shift; | |
croak("No digest algorithm specified") unless @_; | |
open( my $fh, "<", $file ) || croak("Can't open '$file': $!"); | |
binmode($fh); | |
my $ctx = Digest->new(@_); | |
$ctx->addfile($fh); | |
close($fh); | |
return $ctx; | |
} | |
sub digest_file { | |
digest_file_ctx(@_)->digest; | |
} | |
sub digest_file_hex { | |
digest_file_ctx(@_)->hexdigest; | |
} | |
sub digest_file_base64 { | |
digest_file_ctx(@_)->b64digest; | |
} | |
1; | |
__END__ | |
=head1 NAME | |
Digest::file - Calculate digests of files | |
=head1 SYNOPSIS | |
# Poor mans "md5sum" command | |
use Digest::file qw(digest_file_hex); | |
for (@ARGV) { | |
print digest_file_hex($_, "MD5"), " $_\n"; | |
} | |
=head1 DESCRIPTION | |
This module provide 3 convenience functions to calculate the digest | |
of files. The following functions are provided: | |
=over | |
=item digest_file( $file, $algorithm, [$arg,...] ) | |
This function will calculate and return the binary digest of the bytes | |
of the given file. The function will croak if it fails to open or | |
read the file. | |
The $algorithm is a string like "MD2", "MD5", "SHA-1", "SHA-512". | |
Additional arguments are passed to the constructor for the | |
implementation of the given algorithm. | |
=item digest_file_hex( $file, $algorithm, [$arg,...] ) | |
Same as digest_file(), but return the digest in hex form. | |
=item digest_file_base64( $file, $algorithm, [$arg,...] ) | |
Same as digest_file(), but return the digest as a base64 encoded | |
string. | |
=back | |
=head1 SEE ALSO | |
L<Digest> | |