NAME
Digest::MD5::File - Perl extension for getting MD5 sums for files and urls.
SYNOPSIS
my
$md5
= Digest::MD5->new;
$md5
->addpath(
'/path/to/file'
);
my
$digest
=
$md5
->hexdigest;
my
$digest
= file_md5(
$file
);
my
$digest
= file_md5_hex(
$file
);
my
$digest
= file_md5_base64(
$file
);
my
$md5
= Digest::MD5->new;
my
$digest
=
$md5
->hexdigest;
my
$digest
= url_md5(
$url
);
my
$digest
= url_md5_hex(
$url
);
my
$digest
= url_md5_base64(
$url
);
my
$md5
= Digest::MD5->new;
$md5
->adddir(
'/directory'
);
my
$digest
=
$md5
->hexdigest;
my
$dir_hashref
= dir_md5(
$dir
);
my
$dir_hashref
= dir_md5_hex(
$dir
);
my
$dir_hashref
= dir_md5_base64(
$dir
);
DESCRIPTION
Get MD5 sums
for
files of a
given
path or content of a
given
url.
EXPORT
None by default. You can export any file_* dir_*, or url_* function and anything Digest::MD5 can export.
md5_hex(
'abc123'
),
"\n"
;
md5_base64(
'abc123'
),
"\n"
;
OBJECT METHODS
addpath()
my
$md5
= Digest::MD5->new;
$md5
->addpath(
'/path/to/file.txt'
)
or
die
"file.txt is not where you said: $!"
;
or you can add multiple files by specifying an array ref of files:
$md5
->addpath(\
@files
);
adddir()
addpath()s each file in a directory recursively. Follows the same rules as the dir_* functions.
my
$md5
= Digest::MD5->new;
$md5
->adddir(
'/home/tmbg/'
)
or
die
"See warning above to see why I bailed: $!"
;
addurl()
my
$md5
= Digest::MD5->new;
or
die
"They Must Be not on tour"
;
file_* functions
Get the digest in variouse formats of $file. If file does not exist or is a directory it croaks (See NOFATALS for more info)
my
$digest
= file_md5(
$file
) or
warn
"$file failed: $!"
;
my
$digest
= file_md5_hex(
$file
) or
warn
"$file failed: $!"
;
my
$digest
= file_md5_base64(
$file
) or
warn
"$file failed: $!"
;
dir_* functions
Returns a hashref whose keys are files relative to the given path and the values are the MD5 sum of the file or and empty string if a directory. It recurses through the entire depth of the directory. Symlinks to files are just addpath()d and symlinks to directories are followed.
my
$dir_hashref
= dir_md5(
$dir
) or
warn
"$dir failed: $!"
;
my
$dir_hashref
= dir_md5_hex(
$dir
) or
warn
"$dir failed: $!"
;
my
$dir_hashref
= dir_md5_base64(
$dir
) or
warn
"$dir failed: $!"
;
url_* functions
Get the digest in various formats of the content at $url (Including, if $url points to directory, the directory listing content). Returns undef if url fails (IE if LWP::UserAgent's $res->is_success is false)
my
$digest
= url_md5(
$url
) or
warn
"$url failed"
;
my
$digest
= url_md5_hex(
$url
) or
warn
"$url failed"
;
my
$digest
= url_md5_base64(
$url
) or
warn
"$url failed"
;
SPECIAL SETTINGS
BINMODE
By default files are opened in binmode. If you do not want to do this you can unset it a variety of ways:
or
$Digest::MD5::File::BINMODE
= 0;
or at the function/method level by specifying its value as the second argument:
$md5
->addpath(
$file
,0);
my
$digest
= file_md5_hex(
$file
,0);
UTF8
In some cases you may want to have your data utf8 encoded, you can do this the following ways:
or
$Digest::MD5::File::UTF8
= 1;
or at the function/method level by specifying its value as the third argument for files and second for urls:
$md5
->addpath(
$file
,
$binmode
,1);
my
$digest
= file_md5_hex(
$file
,
$binmode
,1);
$md5
->addurl(
$url
,1);
url_md5_hex(
$url
,1);
It use's Encode's encode_utf8() function to do the encoding. So if you do not have Encode (pre 5.7.3) this won't work :)
NOFATALS
Instead of croaking it will return undef if you set NOFATALS to true.
You can do this two ways:
$Digest::MD5::File::NOFATALS
= 1;
or the -nofatals flag:
my
$digest
= file_md5_hex(
$file
) or
die
"$file failed"
;
$! is not set so its not really helpful if you die().
SEE ALSO
Digest::MD5, Encode, LWP::UserAgent
AUTHOR
Daniel Muey, http://drmuey.com/cpan_contact.pl
COPYRIGHT AND LICENSE
Copyright 2005 by Daniel Muey
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.