# phpman > man > Digest::MD5::File(3pm)

## NAME
    [Digest::MD5::File](https://www.chedong.com/phpMan.php/perldoc/Digest%3A%3AMD5%3A%3AFile/markdown) - Perl extension for getting MD5 sums for files and urls.

## SYNOPSIS
        use [Digest::MD5::File](https://www.chedong.com/phpMan.php/perldoc/Digest%3A%3AMD5%3A%3AFile/markdown) qw(dir_md5_hex file_md5_hex url_md5_hex);

        my $md5 = [Digest::MD5](https://www.chedong.com/phpMan.php/perldoc/Digest%3A%3AMD5/markdown)->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](https://www.chedong.com/phpMan.php/perldoc/Digest%3A%3AMD5/markdown)->new;
        $md5->addurl('<http://www.tmbg.com/tour.html>');
        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](https://www.chedong.com/phpMan.php/perldoc/Digest%3A%3AMD5/markdown)->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](https://www.chedong.com/phpMan.php/perldoc/Digest%3A%3AMD5/markdown) can
    export.

       use [Digest::MD5::File](https://www.chedong.com/phpMan.php/perldoc/Digest%3A%3AMD5%3A%3AFile/markdown) qw(md5 md5_hex md5_base64); # 3 [Digest::MD5](https://www.chedong.com/phpMan.php/perldoc/Digest%3A%3AMD5/markdown) functions
       print md5_hex('abc123'), "\n";
       print md5_base64('abc123'), "\n";

## OBJECT METHODS
  addpath()
        my $md5 = [Digest::MD5](https://www.chedong.com/phpMan.php/perldoc/Digest%3A%3AMD5/markdown)->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

        my $md5 = [Digest::MD5](https://www.chedong.com/phpMan.php/perldoc/Digest%3A%3AMD5/markdown)->new;
        $md5->adddir('/home/tmbg/')
            or die "See warning above to see why I bailed: $!";

  addurl()
        my $md5 = [Digest::MD5](https://www.chedong.com/phpMan.php/perldoc/Digest%3A%3AMD5/markdown)->new;
        $md5->addurl('<http://www.tmbg.com/tour.html>')
            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](https://www.chedong.com/phpMan.php/perldoc/LWP%3A%3AUserAgent/markdown)'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:

        use [Digest::MD5::File](https://www.chedong.com/phpMan.php/perldoc/Digest%3A%3AMD5%3A%3AFile/markdown) qw(-nobin);

    or

        $[Digest::MD5::File::BINMODE](https://www.chedong.com/phpMan.php/perldoc/Digest%3A%3AMD5%3A%3AFile%3A%3ABINMODE/markdown) = 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:

        use [Digest::MD5::File](https://www.chedong.com/phpMan.php/perldoc/Digest%3A%3AMD5%3A%3AFile/markdown) qw(-utf8);

    or

        $[Digest::MD5::File::UTF8](https://www.chedong.com/phpMan.php/perldoc/Digest%3A%3AMD5%3A%3AFile%3A%3AUTF8/markdown) = 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](https://www.chedong.com/phpMan.php/perldoc/Digest%3A%3AMD5%3A%3AFile%3A%3ANOFATALS/markdown) = 1;

    or the -nofatals flag:

        use [Digest::MD5::File](https://www.chedong.com/phpMan.php/perldoc/Digest%3A%3AMD5%3A%3AFile/markdown) qw(-nofatals);

        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](https://www.chedong.com/phpMan.php/perldoc/Digest%3A%3AMD5/markdown), Encode, [LWP::UserAgent](https://www.chedong.com/phpMan.php/perldoc/LWP%3A%3AUserAgent/markdown)

## 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.

