NAME

ExtUtils::Install - install files from here to there

SYNOPSIS

use ExtUtils::Install;

install($hashref,$verbose,$nonono);

uninstall($packlistfile,$verbose,$nonono);

pm_to_blib($hashref);

DESCRIPTION

Both install() and uninstall() are specific to the way ExtUtils::MakeMaker handles the installation and deinstallation of perl modules. They are not designed as general purpose tools.

install() takes three arguments. A reference to a hash, a verbose switch and a don't-really-do-it switch. The hash ref contains a mapping of directories: each key/value pair is a combination of directories to be copied. Key is a directory to copy from, value is a directory to copy to. The whole tree below the "from" directory will be copied preserving timestamps and permissions.

There are two keys with a special meaning in the hash: "read" and "write". After the copying is done, install will write the list of target files to the file named by $hashref->{write}. If there is another file named by $hashref->{read}, the contents of this file will be merged into the written file. The read and the written file may be identical, but on AFS it is quite likely that people are installing to a different directory than the one where the files later appear.

install_default() takes one or less arguments. If no arguments are specified, it takes $ARGV[0] as if it was specified as an argument. The argument is the value of MakeMaker's FULLEXT key, like Tk/Canvas. This function calls install() with the same arguments as the defaults the MakeMaker would use.

The argument-less form is convenient for install scripts like

perl -MExtUtils::Install -e install_default Tk/Canvas

Assuming this command is executed in a directory with a populated blib directory, it will proceed as if the blib was build by MakeMaker on this machine. This is useful for binary distributions.

uninstall() takes as first argument a file containing filenames to be unlinked. The second argument is a verbose switch, the third is a no-don't-really-do-it-now switch.

pm_to_blib() takes a hashref as the first argument and copies all keys of the hash to the corresponding values efficiently. Filenames with the extension pm are autosplit. Second argument is the autosplit directory. If third argument is not empty, it is taken as a filter command to be ran on each .pm file, the output of the command being what is finally copied, and the source for auto-splitting.

You can have an environment variable PERL_INSTALL_ROOT set which will be prepended as a directory to each installed file (and directory).