cpan - easily interact with CPAN from the command line


# with arguments and no switches, installs specified modules cpan module_name [ module_name ... ] # with switches, installs modules with extra behavior cpan [-cfimt] module_name [ module_name ... ] # without arguments, starts CPAN.pm shell cpan # without arguments, but some switches cpan [-ahrvACDLO]


This script provides a command interface (not a shell) to CPAN. At the moment it uses CPAN.pm to do the work, but it is not a one-shot command runner for CPAN.pm.

3.1. Meta Options

These options are mutually exclusive, and the script processes them in this order: [hvCAar]. Once the script finds one, it ignores the others, and then exits after it finishes the task. The script ignores any other command line options.

-a 4 Creates the CPAN.pm autobundle with CPAN::Shell->autobundle.

-A module [ module ... ] 4 Shows the primary maintainers for the specified modules

-C module [ module ... ] 4 Show the \f(CW\*(C`Changes\*(C'\fR files for the specified modules

-D module [ module ... ] 4 Show the module details. This prints one line for each out-of-date module (meaning, modules locally installed but have newer versions on CPAN). Each line has three columns: module name, local version, and CPAN version.

-L author [ author ... ] 4 List the modules by the specified authors.

-h 4 Prints a help message.

-O 4 Show the out-of-date modules.

-r 4 Recompiles dynamically loaded modules with CPAN::Shell->recompile.

-v 4 Print the script version and CPAN.pm version.

3.2. Module options

These options are mutually exclusive, and the script processes them in alphabetical order. It only processes the first one it finds.

c 4 Runs a `make clean` in the specified module's directories.

f 4 Forces the specified action, when it normally would have failed.

i 4 Installed the specified modules.

m 4 Makes the specified modules.

t 4 Runs a `make test` on the specified modules.

3.3. Examples

# print a help message cpan -h # print the version numbers cpan -v # create an autobundle cpan -a # recompile modules cpan -r # install modules ( sole -i is optional ) cpan -i Netscape::Booksmarks Business::ISBN # force install modules ( must use -i ) cpan -fi CGI::Minimal URI

4. TO DO


* none noted


Most behaviour, including environment variables and configuration, comes directly from CPAN.pm.


This source is part of a SourceForge project which always has the latest sources in CVS, as well as all of the previous releases.


If, for some reason, I disappear from the world, one of the other members of the project can shepherd this module appropriately.


Japheth Cleaver added the bits to allow a forced install (-f).

Jim Brandt suggest and provided the initial implementation for the up-to-date and Changes features.

Adam Kennedy pointed out that exit() causes problems on Windows where this script ends up with a .bat extension


brian d foy, \f(CW\*(C`<>\*(C'\fR


Copyright (c) 2001-2006, brian d foy, All Rights Reserved.

You may redistribute this under the same terms as Perl itself.