You are viewing the version of this documentation from Perl 5.12.0. View the latest version

CONTENTS

NAME

perlmodlib - constructing new Perl modules and finding existing ones

THE PERL MODULE LIBRARY

Many modules are included in the Perl distribution. These are described below, and all end in .pm. You may discover compiled library files (usually ending in .so) or small pieces of modules to be autoloaded (ending in .al); these were automatically generated by the installation process. You may also discover files in the library directory that end in either .pl or .ph. These are old libraries supplied so that old programs that use them still run. The .pl files will all eventually be converted into standard modules, and the .ph files made by h2ph will probably end up as extension modules made by h2xs. (Some .ph values may already be available through the POSIX, Errno, or Fcntl modules.) The pl2pm file in the distribution may help in your conversion, but it's just a mechanical process and therefore far from bulletproof.

Pragmatic Modules

They work somewhat like compiler directives (pragmata) in that they tend to affect the compilation of your program, and thus will usually work well only when used within a use, or no. Most of these are lexically scoped, so an inner BLOCK may countermand them by saying:

no integer;
no strict 'refs';
no warnings;

which lasts until the end of that BLOCK.

Some pragmas are lexically scoped--typically those that affect the $^H hints variable. Others affect the current package instead, like use vars and use subs, which allow you to predeclare a variables or subroutines within a particular file rather than just a block. Such declarations are effective for the entire file for which they were declared. You cannot rescind them with no vars or no subs.

The following pragmas are defined (and have their own documentation).

attributes

Get/set subroutine or variable attributes

autouse

Postpone load of modules until a function is used

blib

Use MakeMaker's uninstalled version of a package

bytes

Force byte semantics rather than character semantics

charnames

Define character names for \N{named} string literal escapes

deprecate

Perl pragma for deprecating the core version of a module

diagnostics

Produce verbose warning diagnostics

feature

Enable new features

filetest

Control the filetest permission operators

integer

Use integer arithmetic instead of floating point

less

Request less of something

locale

Use and avoid POSIX locales for built-in operations

mro

Method Resolution Order

open

Set default PerlIO layers for input and output

ops

Restrict unsafe operations when compiling

overload

Package for overloading Perl operations

overloading

Lexically control overloading

re

Alter regular expression behaviour

sigtrap

Enable simple signal handling

sort

Control sort() behaviour

strict

Restrict unsafe constructs

subs

Predeclare sub names

utf8

Enable/disable UTF-8 (or UTF-EBCDIC) in source code

vars

Predeclare global variable names (obsolete)

version

Perl extension for Version Objects

vmsish

Control VMS-specific language features

warnings

Control optional warnings

warnings::register

Warnings import function

Standard Modules

Standard, bundled modules are all expected to behave in a well-defined manner with respect to namespace pollution because they use the Exporter module. See their own documentation for details.

It's possible that not all modules listed below are installed on your system. For example, the GDBM_File module will not be installed if you don't have the gdbm library.

AnyDBM_File

Provide framework for multiple DBMs

B

The Perl Compiler Backend

B::Concise

Walk Perl syntax tree, printing concise info about ops

B::Showlex

Show lexical variables used in functions or files

B::Terse

Walk Perl syntax tree, printing terse info about ops

B::Xref

Generates cross reference reports for Perl programs

Benchmark

Benchmark running times of Perl code

CORE

Pseudo-namespace for Perl's core routines

Carp

Warn of errors (from perspective of caller)

Class::Struct

Declare struct-like datatypes as Perl classes

Config

Access Perl configuration information

DB

Programmatic interface to the Perl debugging API

DBM_Filter

Filter DBM keys/values

DBM_Filter::compress

Filter for DBM_Filter

DBM_Filter::encode

Filter for DBM_Filter

DBM_Filter::int32

Filter for DBM_Filter

DBM_Filter::null

Filter for DBM_Filter

DBM_Filter::utf8

Filter for DBM_Filter

Devel::DProf

A Perl code profiler

Devel::Peek

A data debugging tool for the XS programmer

Devel::SelfStubber

Generate stubs for a SelfLoading module

DirHandle

Supply object methods for directory handles

Dumpvalue

Provides screen dump of Perl data.

DynaLoader

Dynamically load C libraries into Perl code

English

Use nice English (or awk) names for ugly punctuation variables

Env

Perl module that imports environment variables as scalars or arrays

Errno

System errno constants

Exporter

Implements default import method for modules

Exporter::Heavy

Exporter guts

ExtUtils::Embed

Utilities for embedding Perl in C/C++ applications

ExtUtils::XSSymSet

Keep sets of symbol names palatable to the VMS linker

Fcntl

Load the C Fcntl.h defines

File::Basename

Parse file paths into directory, filename and suffix.

File::CheckTree

Run many filetest checks on a tree

File::Compare

Compare files or filehandles

File::Copy

Copy files or filehandles

File::DosGlob

DOS like globbing and then some

File::Find

Traverse a directory tree.

File::Glob

Perl extension for BSD glob routine

File::stat

By-name interface to Perl's built-in stat() functions

FileCache

Keep more files open than the system permits

FileHandle

Supply object methods for filehandles

FindBin

Locate directory of original perl script

GDBM_File

Perl5 access to the gdbm library.

Getopt::Std

Process single-character switches with switch clustering

Hash::Util

A selection of general-utility hash subroutines

Hash::Util::FieldHash

Support for Inside-Out Classes

I18N::Collate

Compare 8-bit scalar data according to the current locale

I18N::Langinfo

Query locale information

IPC::Open2

Open a process for both reading and writing using open2()

IPC::Open3

Open a process for reading, writing, and error handling using open3()

NDBM_File

Tied access to ndbm files

Net::hostent

By-name interface to Perl's built-in gethost*() functions

Net::netent

By-name interface to Perl's built-in getnet*() functions

Net::protoent

By-name interface to Perl's built-in getproto*() functions

Net::servent

By-name interface to Perl's built-in getserv*() functions

O

Generic interface to Perl Compiler backends

ODBM_File

Tied access to odbm files

Opcode

Disable named opcodes when compiling perl code

POSIX

Perl interface to IEEE Std 1003.1

PerlIO

On demand loader for PerlIO layers and root of PerlIO::* name space

PerlIO::encoding

Encoding layer

PerlIO::scalar

In-memory IO, scalar IO

PerlIO::via

Helper class for PerlIO layers implemented in perl

Pod::Functions

Group Perl's functions a la perlfunc.pod

Pod::Html

Module to convert pod files to HTML

SDBM_File

Tied access to sdbm files

Search::Dict

Search for key in dictionary file

SelectSaver

Save and restore selected file handle

Socket

Load the C socket.h defines and structure manipulators

Symbol

Manipulate Perl symbols and their names

Sys::Hostname

Try every conceivable way to get hostname

Term::Complete

Perl word completion module

Term::ReadLine

Perl interface to various readline packages.

Text::Abbrev

Create an abbreviation table from a list

Thread

Manipulate threads in Perl (for old code only)

Tie::Array

Base class for tied arrays

Tie::Handle

Base class definitions for tied handles

Tie::Hash

Base class definitions for tied hashes

Tie::Hash::NamedCapture

Named regexp capture buffers

Tie::Memoize

Add data to hash when needed

Tie::Scalar

Base class definitions for tied scalars

Tie::StdHandle

Base class definitions for tied handles

Tie::SubstrHash

Fixed-table-size, fixed-key-length hashing

Time::Local

Efficiently compute time from local and GMT time

Time::gmtime

By-name interface to Perl's built-in gmtime() function

Time::localtime

By-name interface to Perl's built-in localtime() function

Time::tm

Internal object used by Time::gmtime and Time::localtime

UNIVERSAL

Base class for ALL classes (blessed references)

Unicode::UCD

Unicode character database

User::grent

By-name interface to Perl's built-in getgr*() functions

User::pwent

By-name interface to Perl's built-in getpw*() functions

VMS::DCLsym

Perl extension to manipulate DCL symbols

VMS::Stdio

Standard I/O functions via VMS extensions

Win32CORE

Win32 CORE function stubs

XS::APItest

Test the perl C API

XS::APItest::KeywordRPN

Write arithmetic expressions in RPN

XS::Typemap

Module to test the XS typemaps distributed with perl

version::Internals

Perl extension for Version Objects

To find out all modules installed on your system, including those without documentation or outside the standard release, just use the following command (under the default win32 shell, double quotes should be used instead of single quotes).

% perl -MFile::Find=find -MFile::Spec::Functions -Tlwe \
  'find { wanted => sub { print canonpath $_ if /\.pm\z/ },
  no_chdir => 1 }, @INC'

(The -T is here to prevent '.' from being listed in @INC.) They should all have their own documentation installed and accessible via your system man(1) command. If you do not have a find program, you can use the Perl find2perl program instead, which generates Perl code as output you can run through perl. If you have a man program but it doesn't find your modules, you'll have to fix your manpath. See perl for details. If you have no system man command, you might try the perldoc program.

Note also that the command perldoc perllocal gives you a (possibly incomplete) list of the modules that have been further installed on your system. (The perllocal.pod file is updated by the standard MakeMaker install process.)

Extension Modules

Extension modules are written in C (or a mix of Perl and C). They are usually dynamically loaded into Perl if and when you need them, but may also be linked in statically. Supported extension modules include Socket, Fcntl, and POSIX.

Many popular C extension modules do not come bundled (at least, not completely) due to their sizes, volatility, or simply lack of time for adequate testing and configuration across the multitude of platforms on which Perl was beta-tested. You are encouraged to look for them on CPAN (described below), or using web search engines like Alta Vista or Google.

CPAN

CPAN stands for Comprehensive Perl Archive Network; it's a globally replicated trove of Perl materials, including documentation, style guides, tricks and traps, alternate ports to non-Unix systems and occasional binary distributions for these. Search engines for CPAN can be found at http://www.cpan.org/

Most importantly, CPAN includes around a thousand unbundled modules, some of which require a C compiler to build. Major categories of modules are:

The list of the registered CPAN sites follows. Please note that the sorting order is alphabetical on fields:

Continent | |-->Country | |-->[state/province] | |-->ftp | |-->[http]

and thus the North American servers happen to be listed between the European and the South American sites.

Registered CPAN sites

Africa

South Africa
http://cpan.mirror.ac.za/
ftp://cpan.mirror.ac.za/
http://mirror.is.co.za/pub/cpan/
ftp://ftp.is.co.za/pub/cpan/
ftp://ftp.saix.net/pub/CPAN/

Asia

Hong Kong
http://ftp.cuhk.edu.hk/pub/packages/perl/CPAN/
ftp://ftp.cuhk.edu.hk/pub/packages/perl/CPAN/
http://mirrors.geoexpat.com/cpan/
India
http://perlmirror.indialinks.com/
Indonesia
http://cpan.biz.net.id/
http://komo.vlsm.org/CPAN/
ftp://komo.vlsm.org/CPAN/
http://cpan.pesat.net.id/
http://mirror.unej.ac.id/cpan/
ftp://mirror.unej.ac.id/cpan/
Japan
ftp://ftp.u-aizu.ac.jp/pub/CPAN
ftp://ftp.kddilabs.jp/CPAN/
http://ftp.nara.wide.ad.jp/pub/CPAN/
ftp://ftp.nara.wide.ad.jp/pub/CPAN/
http://ftp.jaist.ac.jp/pub/CPAN/
ftp://ftp.jaist.ac.jp/pub/CPAN/
ftp://ftp.dti.ad.jp/pub/lang/CPAN/
ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/
http://ftp.riken.jp/lang/CPAN/
ftp://ftp.riken.jp/lang/CPAN/
http://ftp.yz.yamagata-u.ac.jp/pub/lang/cpan/
ftp://ftp.yz.yamagata-u.ac.jp/pub/lang/cpan/
Kazakhstan
http://mirror.linuxiso.kz/CPAN/
Republic of Korea
http://ftp.kaist.ac.kr/pub/CPAN
ftp://ftp.kaist.ac.kr/pub/CPAN
http://cpan.mirror.cdnetworks.com/
ftp://cpan.mirror.cdnetworks.com/CPAN/
http://cpan.sarang.net/
ftp://cpan.sarang.net/CPAN/
Russia
http://cpan.tomsk.ru/
ftp://cpan.tomsk.ru/
Singapore
http://mirror.averse.net/pub/CPAN
ftp://mirror.averse.net/pub/CPAN
http://cpan.mirror.choon.net/
http://cpan.oss.eznetsols.org
ftp://ftp.oss.eznetsols.org/cpan
Taiwan
http://ftp.cse.yzu.edu.tw/pub/CPAN/
ftp://ftp.cse.yzu.edu.tw/pub/CPAN/
http://cpan.nctu.edu.tw/
ftp://cpan.nctu.edu.tw/
ftp://ftp.ncu.edu.tw/CPAN/
http://cpan.cdpa.nsysu.edu.tw/
ftp://cpan.cdpa.nsysu.edu.tw/Unix/Lang/CPAN/
http://cpan.stu.edu.tw
ftp://ftp.stu.edu.tw/CPAN
http://ftp.stu.edu.tw/CPAN
ftp://ftp.stu.edu.tw/pub/CPAN
http://cpan.cs.pu.edu.tw/
ftp://cpan.cs.pu.edu.tw/pub/CPAN
Thailand
http://mirrors.issp.co.th/cpan/
ftp://mirrors.issp.co.th/cpan/
Turkey
http://cpan.gazi.edu.tr/
http://cpan.ulak.net.tr
ftp://ftp.ulak.net.tr/pub/CPAN
Viet Nam
http://mirror-fpt-telecom.fpt.net/cpan/
ftp://mirror-fpt-telecom.fpt.net/cpan/

Central America

Costa Rica
http://mirrors.ucr.ac.cr/CPAN/
ftp://mirrors.ucr.ac.cr/CPAN/

Europe

Austria
http://cpan.inode.at/
ftp://cpan.inode.at
http://gd.tuwien.ac.at/languages/perl/CPAN/
ftp://gd.tuwien.ac.at/pub/CPAN/
Belgium
http://ftp.belnet.be/mirror/ftp.cpan.org/
ftp://ftp.belnet.be/mirror/ftp.cpan.org/
http://ftp.easynet.be/pub/CPAN/
http://cpan.weepee.org/
http://cpan.fluoline.net/
Bosnia and Herzegovina
http://cpan.blic.net/
Bulgaria
http://cpan.cbox.biz/
ftp://cpan.cbox.biz/cpan/
http://cpan.digsys.bg/
ftp://ftp.digsys.bg/pub/CPAN
Croatia
http://ftp.carnet.hr/pub/CPAN/
ftp://ftp.carnet.hr/pub/CPAN/
Czech Republic
ftp://ftp.fi.muni.cz/pub/CPAN/
http://archive.cpan.cz/
Denmark
http://mirrors.dotsrc.org/cpan
ftp://mirrors.dotsrc.org/cpan/
http://www.cpan.dk/
http://mirror.uni-c.dk/pub/CPAN/
Finland
ftp://ftp.funet.fi/pub/languages/perl/CPAN/
http://mirror.eunet.fi/CPAN
France
http://cpan.enstimac.fr/
ftp://ftp.inria.fr/pub/CPAN/
http://distrib-coffee.ipsl.jussieu.fr/pub/mirrors/cpan/
ftp://distrib-coffee.ipsl.jussieu.fr/pub/mirrors/cpan/
ftp://ftp.lip6.fr/pub/perl/CPAN/
http://mir2.ovh.net/ftp.cpan.org
ftp://mir1.ovh.net/ftp.cpan.org
http://cpan.miroir-francais.fr/
ftp://miroir-francais.fr/pub/cpan/
ftp://ftp.oleane.net/pub/CPAN/
http://ftp.crihan.fr/mirrors/ftp.cpan.org/
ftp://ftp.crihan.fr/mirrors/ftp.cpan.org/
http://ftp.u-strasbg.fr/CPAN
ftp://ftp.u-strasbg.fr/CPAN
http://cpan.cict.fr/
ftp://cpan.cict.fr/pub/CPAN/
Germany
ftp://ftp.fu-berlin.de/unix/languages/perl/
http://mirrors.softliste.de/cpan/
ftp://ftp.rub.de/pub/CPAN/
http://www.planet-elektronik.de/CPAN/
http://ftp.hosteurope.de/pub/CPAN/
ftp://ftp.hosteurope.de/pub/CPAN/
http://www.mirrorspace.org/cpan/
http://mirror.netcologne.de/cpan/
ftp://mirror.netcologne.de/cpan/
ftp://ftp.freenet.de/pub/ftp.cpan.org/pub/CPAN/
http://ftp-stud.hs-esslingen.de/pub/Mirrors/CPAN/
ftp://ftp-stud.hs-esslingen.de/pub/Mirrors/CPAN/
http://mirrors.zerg.biz/cpan/
http://ftp.gwdg.de/pub/languages/perl/CPAN/
ftp://ftp.gwdg.de/pub/languages/perl/CPAN/
http://dl.ambiweb.de/mirrors/ftp.cpan.org/
http://cpan.mirror.clusters.kg/
http://cpan.mirror.iphh.net/
ftp://cpan.mirror.iphh.net/pub/CPAN/
http://cpan.mirroring.de/
http://mirror.informatik.uni-mannheim.de/pub/mirrors/CPAN/
ftp://mirror.informatik.uni-mannheim.de/pub/mirrors/CPAN/
http://ftp.cw.net/pub/CPAN/
ftp://ftp.cw.net/pub/CPAN/
http://cpan.cpantesters.org/
ftp://cpan.cpantesters.org/CPAN/
http://cpan.mirrored.de/
ftp://mirror.petamem.com/CPAN/
http://cpan.noris.de/
ftp://cpan.noris.de/pub/CPAN/
ftp://ftp.mpi-sb.mpg.de/pub/perl/CPAN/
ftp://ftp.gmd.de/mirrors/CPAN/
Greece
ftp://ftp.forthnet.gr/pub/languages/perl/CPAN
ftp://ftp.ntua.gr/pub/lang/perl/
http://cpan.cc.uoc.gr/
ftp://ftp.cc.uoc.gr/mirrors/CPAN/
Hungary
http://cpan.mirrors.enexis.hu/
ftp://cpan.mirrors.enexis.hu/mirrors/cpan/
http://cpan.hu/
Iceland
http://ftp.rhnet.is/pub/CPAN/
ftp://ftp.rhnet.is/pub/CPAN/
Ireland
http://ftp.esat.net/pub/languages/perl/CPAN/
ftp://ftp.esat.net/pub/languages/perl/CPAN/
http://ftp.heanet.ie/mirrors/ftp.perl.org/pub/CPAN
ftp://ftp.heanet.ie/mirrors/ftp.perl.org/pub/CPAN
Italy
http://bo.mirror.garr.it/mirrors/CPAN/
http://cpan.panu.it/
ftp://ftp.panu.it/pub/mirrors/perl/CPAN/
http://cpan.fastbull.org/
Latvia
http://kvin.lv/pub/CPAN/
Lithuania
http://ftp.litnet.lt/pub/CPAN/
ftp://ftp.litnet.lt/pub/CPAN/
Malta
http://cpan.waldonet.net.mt/
Netherlands
ftp://ftp.quicknet.nl/pub/CPAN/
http://mirror.hostfuss.com/CPAN/
ftp://mirror.hostfuss.com/CPAN/
http://mirrors3.kernel.org/cpan/
ftp://mirrors3.kernel.org/pub/CPAN/
http://cpan.osmirror.nl/
ftp://ftp.osmirror.nl/pub/cpan/
http://cpan.mirror.versatel.nl/
ftp://ftp.mirror.versatel.nl/cpan/
ftp://download.xs4all.nl/pub/mirror/CPAN/
http://mirror.leaseweb.com/CPAN/
ftp://mirror.leaseweb.com/CPAN/
ftp://ftp.cpan.nl/pub/CPAN/
http://archive.cs.uu.nl/mirror/CPAN/
ftp://ftp.cs.uu.nl/mirror/CPAN/
http://https://luxitude.net/cpan/
Norway
ftp://ftp.uninett.no/pub/languages/perl/CPAN
ftp://ftp.uit.no/pub/languages/perl/cpan/
Poland
http://mirror.icis.pcz.pl/CPAN/
ftp://mirror.icis.pcz.pl/CPAN/
http://piotrkosoft.net/pub/mirrors/CPAN/
ftp://ftp.piotrkosoft.net/pub/mirrors/CPAN/
http://ftp.man.poznan.pl/pub/CPAN
ftp://ftp.man.poznan.pl/pub/CPAN
ftp://sunsite.icm.edu.pl/pub/CPAN/
ftp://ftp.tpnet.pl/d4/CPAN/
Portugal
http://cpan.dei.uc.pt/
ftp://ftp.dei.uc.pt/pub/CPAN
ftp://ftp.ist.utl.pt/pub/CPAN/
http://cpan.perl.pt/
http://cpan.ip.pt/
ftp://cpan.ip.pt/pub/cpan/
http://mirrors.nfsi.pt/CPAN/
ftp://mirrors.nfsi.pt/pub/CPAN/
http://cpan.dcc.fc.up.pt/
Romania
http://ftp.astral.ro/pub/CPAN/
ftp://ftp.astral.ro/pub/CPAN/
ftp://ftp.lug.ro/CPAN
http://mirrors.xservers.ro/CPAN/
http://mirrors.hostingromania.ro/ftp.cpan.org/
ftp://ftp.hostingromania.ro/mirrors/ftp.cpan.org/
ftp://ftp.iasi.roedu.net/pub/mirrors/ftp.cpan.org/
ftp://ftp.ambra.ro/pub/CPAN
Russia
ftp://ftp.aha.ru/CPAN/
http://cpan.rinet.ru/
ftp://cpan.rinet.ru/pub/mirror/CPAN/
ftp://ftp.SpringDaemons.com/pub/CPAN/
http://cpan.nx1.ru/
ftp://cpan.nx1.ru/
http://mirror.rol.ru/CPAN/
http://ftp.silvernet.ru/CPAN/
http://ftp.spbu.ru/CPAN/
ftp://ftp.spbu.ru/CPAN/
Slovakia
http://cpan.fyxm.net/
Slovenia
http://www.klevze.si/cpan
Spain
http://osl.ugr.es/CPAN/
ftp://ftp.rediris.es/mirror/CPAN/
http://ftp.gui.uva.es/sites/cpan.org/
ftp://ftp.gui.uva.es/sites/cpan.org/
Sweden
http://mirrors4.kernel.org/cpan/
ftp://mirrors4.kernel.org/pub/CPAN/
Switzerland
http://cpan.mirror.solnet.ch/
ftp://ftp.solnet.ch/mirror/CPAN/
http://mirror.switch.ch/ftp/mirror/CPAN/
ftp://mirror.switch.ch/mirror/CPAN/
Ukraine
http://cpan.makeperl.org/
ftp://cpan.makeperl.org/pub/CPAN
http://cpan.org.ua/
http://no-more.kiev.ua/CPAN/
ftp://no-more.kiev.ua/pub/CPAN/
http://cpan.gafol.net/
ftp://ftp.gafol.net/pub/cpan/
United Kingdom
http://www.mirrorservice.org/sites/ftp.funet.fi/pub/languages/perl/CPAN/
ftp://ftp.mirrorservice.org/sites/ftp.funet.fi/pub/languages/perl/CPAN/
http://mirror.tje.me.uk/pub/mirrors/ftp.cpan.org/
ftp://mirror.tje.me.uk/pub/mirrors/ftp.cpan.org/
http://www.mirror.8086.net/sites/CPAN/
ftp://ftp.mirror.8086.net/sites/CPAN/
http://cpan.mirror.anlx.net/
ftp://ftp.mirror.anlx.net/CPAN/
http://mirror.bytemark.co.uk/CPAN/
ftp://mirror.bytemark.co.uk/CPAN/
http://cpan.etla.org/
ftp://cpan.etla.org/pub/CPAN
ftp://ftp.demon.co.uk/pub/CPAN/
http://mirror.sov.uk.goscomb.net/CPAN/
ftp://mirror.sov.uk.goscomb.net/pub/CPAN/
http://ftp.plig.net/pub/CPAN/
ftp://ftp.plig.net/pub/CPAN/
http://ftp.ticklers.org/pub/CPAN/
ftp://ftp.ticklers.org/pub/CPAN/
http://cpan.mirrors.uk2.net/
ftp://mirrors.uk2.net/pub/CPAN/
http://mirror.ox.ac.uk/sites/www.cpan.org/
ftp://mirror.ox.ac.uk/sites/www.cpan.org/

North America

Bahamas
http://www.securehost.com/mirror/CPAN/
Canada
http://cpan.justanotherperlhacker.com/pub/CPAN/
ftp://cpan.justanotherperlhacker.com/pub/CPAN/
http://cpan.arcticnetwork.ca
ftp://mirror.arcticnetwork.ca/pub/CPAN
http://cpan.sunsite.ualberta.ca/
ftp://cpan.sunsite.ualberta.ca/pub/CPAN/
http://theoryx5.uwinnipeg.ca/pub/CPAN/
ftp://theoryx5.uwinnipeg.ca/pub/CPAN/
http://arwen.cs.dal.ca/mirror/CPAN/
ftp://arwen.cs.dal.ca/pub/mirror/CPAN/
http://CPAN.mirror.rafal.ca/
ftp://CPAN.mirror.rafal.ca/pub/CPAN/
ftp://ftp.nrc.ca/pub/CPAN/
http://mirror.csclub.uwaterloo.ca/pub/CPAN/
ftp://mirror.csclub.uwaterloo.ca/pub/CPAN/
Mexico
http://www.msg.com.mx/CPAN/
ftp://ftp.msg.com.mx/pub/CPAN/
United States
Alabama
http://mirror.hiwaay.net/CPAN/
ftp://mirror.hiwaay.net/CPAN/
California
http://cpan.knowledgematters.net/
http://cpan.binkerton.com/
http://cpan.develooper.com/
http://mirrors.gossamer-threads.com/CPAN
http://cpan.schatt.com/
http://mirrors.kernel.org/cpan/
ftp://mirrors.kernel.org/pub/CPAN
http://mirrors2.kernel.org/cpan/
ftp://mirrors2.kernel.org/pub/CPAN/
http://cpan.mirrors.redwire.net/
http://cpan.mirror.facebook.net/
http://mirrors1.kernel.org/cpan/
ftp://mirrors1.kernel.org/pub/CPAN/
http://cpan-sj.viaverio.com/
ftp://cpan-sj.viaverio.com/pub/CPAN/
http://www.perl.com/CPAN/
http://cpan.yahoo.com/
Florida
ftp://ftp.cise.ufl.edu/pub/mirrors/CPAN/
http://mirror.atlantic.net/pub/CPAN/
ftp://mirror.atlantic.net/pub/CPAN/
http://mirror.candidhosting.com/pub/CPAN
ftp://mirror.candidhosting.com/pub/CPAN
Idaho
http://mirror.its.uidaho.edu/pub/cpan/
ftp://mirror.its.uidaho.edu/cpan/
Illinois
http://cpan.mirrors.hoobly.com/
http://cpan.uchicago.edu/pub/CPAN/
ftp://cpan.uchicago.edu/pub/CPAN/
http://mirrors.servercentral.net/CPAN/
http://www.stathy.com/CPAN/
ftp://www.stathy.com/CPAN/
Indiana
ftp://ftp.uwsg.iu.edu/pub/perl/CPAN/
http://cpan.netnitco.net/
ftp://cpan.netnitco.net/pub/mirrors/CPAN/
http://ftp.ndlug.nd.edu/pub/perl/
ftp://ftp.ndlug.nd.edu/pub/perl/
http://fx.saintjoe.edu/pub/CPAN
Massachusetts
ftp://ftp.ccs.neu.edu/net/mirrors/ftp.funet.fi/pub/languages/perl/CPAN/
Michigan
http://ftp.wayne.edu/cpan/
ftp://ftp.wayne.edu/cpan/
Minnesota
http://cpan.msi.umn.edu/
New Jersey
http://mirror.datapipe.net/CPAN/
ftp://mirror.datapipe.net/pub/CPAN/
New York
http://mirrors.24-7-solutions.net/pub/CPAN/
ftp://mirrors.24-7-solutions.net/pub/CPAN/
http://mirror.cc.columbia.edu/pub/software/cpan/
ftp://mirror.cc.columbia.edu/pub/software/cpan/
http://cpan.belfry.net/
http://cpan.erlbaum.net/
ftp://cpan.erlbaum.net/CPAN/
http://cpan.hexten.net/
ftp://cpan.hexten.net/
http://ftp.fxcorporate.com/CPAN/
ftp://ftp.fxcorporate.com/pub/CPAN/
ftp://mirror.nyi.net/CPAN/
http://mirror.rit.edu/CPAN/
ftp://mirror.rit.edu/CPAN/
North Carolina
http://www.ibiblio.org/pub/mirrors/CPAN
ftp://ftp.ncsu.edu/pub/mirror/CPAN/
Oregon
http://ftp.osuosl.org/pub/CPAN/
ftp://ftp.osuosl.org/pub/CPAN/
Pennsylvania
http://ftp.epix.net/CPAN/
ftp://ftp.epix.net/pub/languages/perl/
http://cpan.pair.com/
ftp://cpan.pair.com/pub/CPAN/
South Carolina
http://cpan.mirror.clemson.edu/
Tennessee
http://mira.sunsite.utk.edu/CPAN/
Texas
http://mirror.uta.edu/CPAN
Utah
http://cpan.cs.utah.edu
ftp://cpan.cs.utah.edu/pub/CPAN/
ftp://mirror.xmission.com/CPAN/
Virginia
http://cpan-du.viaverio.com/
ftp://cpan-du.viaverio.com/pub/CPAN/
http://perl.secsup.org/
ftp://perl.secsup.org/pub/perl/
ftp://mirror.cogentco.com/pub/CPAN/
Washington
http://cpan.llarian.net/
ftp://cpan.llarian.net/pub/CPAN/
ftp://ftp-mirror.internap.com/pub/CPAN/
Wisconsin
http://cpan.mirrors.tds.net
ftp://cpan.mirrors.tds.net/pub/CPAN
http://mirror.sit.wisc.edu/pub/CPAN/
ftp://mirror.sit.wisc.edu/pub/CPAN/

Oceania

Australia
http://mirror.internode.on.net/pub/cpan/
ftp://mirror.internode.on.net/pub/cpan/
http://cpan.mirror.aussiehq.net.au/
http://mirror.as24220.net/cpan/
ftp://mirror.as24220.net/cpan/
New Zealand
ftp://ftp.auckland.ac.nz/pub/perl/CPAN/
http://cpan.inspire.net.nz
ftp://cpan.inspire.net.nz/cpan
http://cpan.catalyst.net.nz/CPAN/
ftp://cpan.catalyst.net.nz/pub/CPAN/

South America

Argentina
http://cpan.patan.com.ar/
http://cpan.localhost.net.ar
ftp://mirrors.localhost.net.ar/pub/mirrors/CPAN
Brazil
ftp://cpan.pop-mg.com.br/pub/CPAN/
http://ftp.pucpr.br/CPAN
ftp://ftp.pucpr.br/CPAN
http://cpan.kinghost.net/
ftp://ftp.linorg.usp.br/CPAN
Chile
http://cpan.dcc.uchile.cl/
ftp://cpan.dcc.uchile.cl/pub/lang/cpan/
Colombia
http://www.laqee.unal.edu.co/CPAN/

RSYNC Mirrors

mirror.as24220.net::cpan
cpan.inode.at::CPAN
gd.tuwien.ac.at::CPAN
ftp.belnet.be::packages/cpan
rsync.linorg.usp.br::CPAN
rsync.arcticnetwork.ca::CPAN
CPAN.mirror.rafal.ca::CPAN
mirror.csclub.uwaterloo.ca::CPAN
theoryx5.uwinnipeg.ca::CPAN
www.laqee.unal.edu.co::CPAN
mirror.uni-c.dk::CPAN
rsync.nic.funet.fi::CPAN
rsync://distrib-coffee.ipsl.jussieu.fr/pub/mirrors/cpan/
mir1.ovh.net::CPAN
miroir-francais.fr::cpan
ftp.crihan.fr::CPAN
rsync://mirror.cict.fr/cpan/
rsync://mirror.netcologne.de/cpan/
ftp-stud.hs-esslingen.de::CPAN/
ftp.gwdg.de::FTP/languages/perl/CPAN/
cpan.mirror.iphh.net::CPAN
cpan.cpantesters.org::cpan
cpan.hu::CPAN
komo.vlsm.org::CPAN
mirror.unej.ac.id::cpan
ftp.esat.net::/pub/languages/perl/CPAN
ftp.heanet.ie::mirrors/ftp.perl.org/pub/CPAN
rsync.panu.it::CPAN
cpan.fastbull.org::CPAN
ftp.kddilabs.jp::cpan
ftp.nara.wide.ad.jp::cpan/
rsync://ftp.jaist.ac.jp/pub/CPAN/
rsync://ftp.riken.jp/cpan/
mirror.linuxiso.kz::CPAN
rsync://mirrors3.kernel.org/mirrors/CPAN/
rsync://rsync.osmirror.nl/cpan/
mirror.leaseweb.com::CPAN
cpan.nautile.nc::CPAN
mirror.icis.pcz.pl::CPAN
piotrkosoft.net::mirrors/CPAN
rsync://cpan.perl.pt/
ftp.kaist.ac.kr::cpan
cpan.sarang.net::CPAN
mirror.averse.net::cpan
rsync.oss.eznetsols.org
mirror.ac.za::cpan
ftp.is.co.za::IS-Mirror/ftp.cpan.org/
rsync://ftp.gui.uva.es/cpan/
rsync://mirrors4.kernel.org/mirrors/CPAN/
ftp.solnet.ch::CPAN
ftp.ulak.net.tr::CPAN
gafol.net::cpan
rsync.mirrorservice.org::ftp.funet.fi/pub/
rsync://rsync.mirror.8086.net/CPAN/
rsync.mirror.anlx.net::CPAN
mirror.bytemark.co.uk::CPAN
ftp.plig.net::CPAN
rsync://ftp.ticklers.org:CPAN/
mirrors.ibiblio.org::CPAN
cpan-du.viaverio.com::CPAN
mirror.hiwaay.net::CPAN
rsync://mira.sunsite.utk.edu/CPAN/
cpan.mirrors.tds.net::CPAN
mirror.its.uidaho.edu::cpan
rsync://mirror.cc.columbia.edu::cpan/
ftp.fxcorporate.com::CPAN
rsync.atlantic.net::CPAN
mirrors.kernel.org::mirrors/CPAN
rsync://mirrors2.kernel.org/mirrors/CPAN/
cpan.pair.com::CPAN
rsync://mirror.rit.edu/CPAN/
rsync://mirror.facebook.net/cpan/
rsync://mirrors1.kernel.org/mirrors/CPAN/
cpan-sj.viaverio.com::CPAN

For an up-to-date listing of CPAN sites, see http://www.cpan.org/SITES or ftp://www.cpan.org/SITES .

Modules: Creation, Use, and Abuse

(The following section is borrowed directly from Tim Bunce's modules file, available at your nearest CPAN site.)

Perl implements a class using a package, but the presence of a package doesn't imply the presence of a class. A package is just a namespace. A class is a package that provides subroutines that can be used as methods. A method is just a subroutine that expects, as its first argument, either the name of a package (for "static" methods), or a reference to something (for "virtual" methods).

A module is a file that (by convention) provides a class of the same name (sans the .pm), plus an import method in that class that can be called to fetch exported symbols. This module may implement some of its methods by loading dynamic C or C++ objects, but that should be totally transparent to the user of the module. Likewise, the module might set up an AUTOLOAD function to slurp in subroutine definitions on demand, but this is also transparent. Only the .pm file is required to exist. See perlsub, perltoot, and AutoLoader for details about the AUTOLOAD mechanism.

Guidelines for Module Creation

Guidelines for Converting Perl 4 Library Scripts into Modules

Guidelines for Reusing Application Code

NOTE

Perl does not enforce private and public parts of its modules as you may have been used to in other languages like C++, Ada, or Modula-17. Perl doesn't have an infatuation with enforced privacy. It would prefer that you stayed out of its living room because you weren't invited, not because it has a shotgun.

The module and its user have a contract, part of which is common law, and part of which is "written". Part of the common law contract is that a module doesn't pollute any namespace it wasn't asked to. The written contract for the module (A.K.A. documentation) may make other provisions. But then you know when you use RedefineTheWorld that you're redefining the world and willing to take the consequences.

2 POD Errors

The following errors were encountered while parsing the POD:

Around line 1820:

You forgot a '=back' before '=head2'

Around line 1918:

=back without =over