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 shell

        # without arguments, but some switches
        cpan [-ahrvACDLO]


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

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 Creates the autobundle with CPAN::Shell->autobundle.
-A module [ module ... ] Shows the primary maintainers for the specified modules
-C module [ module ... ] Show the
files for the specified modules
-D module [ module ... ] 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 ... ] List the modules by the specified authors.
-h Prints a help message.
-O Show the out-of-date modules.
-r Recompiles dynamically loaded modules with CPAN::Shell->recompile.
-v Print the script version and version.

Module options

These options are mutually exclusive, and the script processes them in alphabetical order. It only processes the first one it finds.
c Runs a ‘make clean‘ in the specified module’s directories.
f Forces the specified action, when it normally would have failed.
i Installed the specified modules.
m Makes the specified modules.
t Runs a ‘make test‘ on the specified modules.


        # 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



* none noted


Most behaviour, including environment variables and configuration, comes directly from


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,



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

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

openSUSE Logo