Blame Digest/file.pm

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