---
name: "ExtUtils::Manifest"
section: "3pm"
platform: "linux"
package: "perl-5.004-doc"
version: "5.004.05-6"
release: "Debian 2.2 (Potato)"
platforms: ["linux"]
url: "https://new.carta.tech/ExtUtils::Manifest/3pm"
---

# ExtUtils::Manifest(3pm)

utilities to write and check a MANIFEST file

## NAME

ExtUtils::Manifest - utilities to write and check a MANIFEST file

## SYNOPSIS

`require ExtUtils::Manifest;`

`ExtUtils::Manifest::mkmanifest;`

`ExtUtils::Manifest::manicheck;`

`ExtUtils::Manifest::filecheck;`

`ExtUtils::Manifest::fullcheck;`

`ExtUtils::Manifest::skipcheck;`

`ExtUtild::Manifest::manifind();`

`ExtUtils::Manifest::maniread($file);`

`ExtUtils::Manifest::manicopy($read,$target,$how);`

## DESCRIPTION

*Mkmanifest()* writes all files in and below the current directory to a file named in the global variable `$ExtUtils::Manifest::MANIFEST` (which defaults to `MANIFEST`) in the current directory. It works similar to

```
    find . -print
```

but in doing so checks each line in an existing `MANIFEST` file and includes any comments that are found in the existing `MANIFEST` file in the new one. Anything between white space and an end of line within a `MANIFEST` file is considered to be a comment. Filenames and comments are seperated by one or more TAB characters in the output. All files that match any regular expression in a file `MANIFEST.SKIP` (if such a file exists) are ignored.

*Manicheck()* checks if all the files within a `MANIFEST` in the current directory really do exist. It only reports discrepancies and exits silently if MANIFEST and the tree below the current directory are in sync.

*Filecheck()* finds files below the current directory that are not mentioned in the `MANIFEST` file. An optional file `MANIFEST.SKIP` will be consulted. Any file matching a regular expression in such a file will not be reported as missing in the `MANIFEST` file.

*Fullcheck()* does both a *manicheck()* and a *filecheck()*.

*Skipcheck()* lists all the files that are skipped due to your `MANIFEST.SKIP` file.

*Manifind()* retruns a hash reference. The keys of the hash are the files found below the current directory.

*Maniread*($file) reads a named `MANIFEST` file (defaults to `MANIFEST` in the current directory) and returns a HASH reference with files being the keys and comments being the values of the HASH. Blank lines and lines which start with `#` in the `MANIFEST` file are discarded.

*Manicopy($read,$target,$how)* copies the files that are the keys in the HASH *%$read* to the named target directory. The HASH reference *$read* is typically returned by the *maniread()* function. This function is useful for producing a directory tree identical to the intended distribution tree. The third parameter `$how` can be used to specify a different methods of "copying". Valid values are `cp`, which actually copies the files, `ln` which creates hard links, and `best` which mostly links the files but copies any symbolic link to make a tree without any symbolic link. Best is the default.

## MANIFEST.SKIP

The file MANIFEST.SKIP may contain regular expressions of files that should be ignored by *mkmanifest()* and *filecheck()*. The regular expressions should appear one on each line. Blank lines and lines which start with `#` are skipped.  Use `\#` if you need a regular expression to start with a sharp character. A typical example:

```
    \bRCS\b
    ^MANIFEST\.
    ^Makefile$
    ~$
    \.html$
    \.old$
    ^blib/
    ^MakeMaker-\d
```

## EXPORT\_OK

`&mkmanifest`, `&manicheck`, `&filecheck`, `&fullcheck`, `&maniread`, and `&manicopy` are exportable.

## GLOBAL VARIABLES

`$ExtUtils::Manifest::MANIFEST` defaults to `MANIFEST`. Changing it results in both a different `MANIFEST` and a different `MANIFEST.SKIP` file. This is useful if you want to maintain different distributions for different audiences (say a user version and a developer version including RCS).

`$ExtUtils::Manifest::Quiet` defaults to 0. If set to a true value, all functions act silently.

## DIAGNOSTICS

All diagnostic output is sent to `STDERR`.\

- `Not in MANIFEST:` *file*

  is reported if a file is found, that is missing in the `MANIFEST` file which is excluded by a regular expression in the file `MANIFEST.SKIP`.\

- `No such file:` *file*

  is reported if a file mentioned in a `MANIFEST` file does not exist.\

- `MANIFEST:` *$!*

  is reported if `MANIFEST` could not be opened.\

- `Added to MANIFEST:` *file*

  is reported by *mkmanifest()* if `$Verbose` is set and a file is added to MANIFEST. `$Verbose` is set to 1 by default.

## SEE ALSO

the *ExtUtils::MakeMaker* manpage which has handy targets for most of the functionality.

## AUTHOR

Andreas Koenig \<*koenig@franz.ww.TU-Berlin.DE*\>
