---
name: "Digest::MD5::File"
section: "3pm"
platform: "linux"
package: "libdigest-md5-file-perl"
version: "0.08-1.1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Digest::MD5::File"
---

# Digest::MD5::File(3pm)

Perl extension for getting MD5 sums for files and urls.

## NAME

Digest::MD5::File - Perl extension for getting MD5 sums for files and urls.

## SYNOPSIS

```
    use Digest::MD5::File qw(dir_md5_hex file_md5_hex url_md5_hex);
    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;
    $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->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.

```
   use Digest::MD5::File qw(md5 md5_hex md5_base64); # 3 Digest::MD5 functions
   print md5_hex('abc123'), "\n";
   print 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;
    $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'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 qw(-nobin);
```

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:

```
    use Digest::MD5::File qw(-utf8);
```

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:

```
    use Digest::MD5::File 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, 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.
