View on
MetaCPAN is shutting down
For details read Perl NOC. After June 25th this page will redirect to
Leo Charre > cpanupload-1.1 > cpanupload


Annotate this POD

View/Report Bugs


cpanupload - upload one or more files to CPAN, using PAUSE


cpanupload [OPTIONS] file1 .. fileN


cpanupload is a script which automates the process of uploading a file to CPAN using PAUSE, the Perl Authors Upload Server. For example, to upload a recent version of the Net::Dict module I ran:

    % cpanupload -verbose Net-Dict-1.07.tar.gz

If everything went OK, you'll get two mail messages from the PAUSE monitor: one to acknowledge the upload, and one to let you know if your upload made it through to CPAN.

Given one or more files to upload, cpanupload carries out the following two steps:

This is just one of the ways you can upload something to PAUSE. See the PAUSE FAQ for details (referenced in SEE ALSO section below).

Before using cpanupload you must register with PAUSE, to get a username and password. If you are a regular uploader to PAUSE, you'll probably want to create a .pause configuration file, as described in "CONFIGURATION FILE" below. If not, you can just use the command-line options, as described in "OPTIONS" below. If you don't provide your password (via configuration file or command-line), then you will be prompted for it. Echo'ing will be turned off while you type your password. This behaviour can be suppressed with the -non_interactive option, described below.


-user <string>

Your PAUSE username (which you previously registered with PAUSE).

-password <string>

The password for your PAUSE username.

-directory <string> | -dir <string>

A subdirectory in your CPAN area where the file should be uploaded to.

-mailto <email>

Your email address, to include the HTTP request header. This is also used as the password for the ftp upload to PAUSE.

-ftp_gateway <host>

Specifies the name of the host which has your ftp gateway.

-ftp_proxy <host>

Specifies the name of the host which has your ftp proxy, if you're behind a firewall.

-http_proxy <URL>

Specifies the URL for a proxy to use when making HTTP requests.

-non_interactive | -ni

cpanupload should not prompt for any missing information (eg password), it should just warn or die, as appropriate.


Displays a short help message with the OPTIONS section from the cpanupload documentation.


Display the full documentation for cpanupload.


Turns on verbose information as the script runs.


Turns on debugging information. Useful mainly for the developer, it displays the HTTP request and response.


Display the version number of the cpanupload script.


You can provide the configuration information needed via a .pause file in your home directory. If you upload files at all regularly you will want to set up one of these.

user username

This is used to specify your PAUSE username. This just saves you from typing it every time you run the script.

password password

This is used to specify your PAUSE password.

directory path

Specify a subdirectory in your CPAN area.

ftp_gateway HOST

Specifies the hostname of your ftp gateway used to get through a firewall. For example:

    ftp_gateway = ftp-gw
ftp_proxy HOST

Specifies the hostname of your ftp proxy used to get through a firewall. For example:

    ftp_proxy = ftp-proxy
http_proxy URL

The URL for the proxy to use when making HTTP requests to the PAUSE web server. For example:

    http_proxy = http://proxy/
mailto EMAIL

Specifies the email address which is passed in the header of the HTTP request, and as the password for the anonymous ftp upload. You must provide this.


Specifies that cpanupload should never prompt the user (eg for password), but should take a default action.

The following is a sample .pause file:

    # example .pause for user neilb
    # the user is your registered PAUSE username
    user NEILB
    password thisisnotmyrealpassword

    mailto      =
    ftp_gateway = ftp-gw
    http_proxy  =


Note that your .pause must not be readable by others, since it can contain your PAUSE password. The cpanupload script refuses to run if your config file can be read by others.


Also, let me know if you ever have occasion to wish that the features below had been implemented. I probably won't do them unless someone would like to see them in.

I'd be happy to hear any more suggestions.


The home page for the Comprehensive Perl Archive Network.


The Perl Authors Upload SErver. The PAUSE FAQ can be seen on CPAN:

Graham Barr's FTP client module, which is part of the libnet distribution, available from:

The LWP distribution which provides the modules used by this script to talk to the PAUSE web server. You can get the latest version from:

The module used to handle command-line options and the configuration file.

This is actually a subclass of AppConfig, which you'll also need.

The module used to turn off echo'ing if we prompt the user for a PAUSE password.


$Revision: $




AppConfig::Std Net::FTP HTTP::Request::Common LWP::UserAgent HTTP::Status File::Basename Term::ReadKey


Neil Bowers <>


Leo Charre leocharre at cpan dot org

The original cpan-upload script was written by Neil Bowers and resides on cpan. This distro is mostly to allow you to install this using command line cpan.


Copyright (c) 2009 Leo Charre. All rights reserved.

Copyright (c) 2001-2002 Neil Bowers.

Copyright (c) 1998-2001 Canon Research Centre Europe. All rights reserved.


This package is free software; you can redistribute it and/or modify it under the same terms as Perl itself, i.e., under the terms of the "Artistic License" or the "GNU General Public License".


This package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

See the "GNU General Public License" for more details.

syntax highlighting: