2 Generated by perlmodlib.PL -- DO NOT EDIT!
6 perlmodlib - constructing new Perl modules and finding existing ones
10 =head1 THE PERL MODULE LIBRARY
12 Many modules are included the Perl distribution. These are described
13 below, and all end in F<.pm>. You may discover compiled library
14 file (usually ending in F<.so>) or small pieces of modules to be
15 autoloaded (ending in F<.al>); these were automatically generated
16 by the installation process. You may also discover files in the
17 library directory that end in either F<.pl> or F<.ph>. These are
18 old libraries supplied so that old programs that use them still
19 run. The F<.pl> files will all eventually be converted into standard
20 modules, and the F<.ph> files made by B<h2ph> will probably end up
21 as extension modules made by B<h2xs>. (Some F<.ph> values may
22 already be available through the POSIX, Errno, or Fcntl modules.)
23 The B<pl2pm> file in the distribution may help in your conversion,
24 but it's just a mechanical process and therefore far from bulletproof.
26 =head2 Pragmatic Modules
28 They work somewhat like compiler directives (pragmata) in that they
29 tend to affect the compilation of your program, and thus will usually
30 work well only when used within a C<use>, or C<no>. Most of these
31 are lexically scoped, so an inner BLOCK may countermand them
38 which lasts until the end of that BLOCK.
40 Some pragmas are lexically scoped--typically those that affect the
41 C<$^H> hints variable. Others affect the current package instead,
42 like C<use vars> and C<use subs>, which allow you to predeclare a
43 variables or subroutines within a particular I<file> rather than
44 just a block. Such declarations are effective for the entire file
45 for which they were declared. You cannot rescind them with C<no
48 The following pragmas are defined (and have their own documentation).
54 Get/set subroutine or variable attributes
58 Set/get attributes of a subroutine (deprecated)
62 Postpone load of modules until a function is used
66 Establish IS-A relationship with base class at compile time
70 Transparent big integer support for Perl
74 Transparent BigNumber support for Perl
78 Transparent BigNumber/BigRational support for Perl
82 Use MakeMaker's uninstalled version of a package
86 Force byte semantics rather than character semantics
90 Define character names for C<\N{named}> string literal escapes
98 Perl compiler pragma to force verbose warning diagnostics
102 Allows you to write your script in non-ascii or non-utf8
106 Compile-time class fields
110 Control the filetest permission operators
114 C<use> a Perl module if a condition holds
118 Use integer arithmetic instead of floating point
122 Request less of something from the compiler
126 Use and avoid POSIX locales for built-in operations
130 Set default disciplines for input and output
134 Restrict unsafe operations when compiling
138 Package for overloading perl operations
142 Alter regular expression behaviour
146 Enable simple signal handling
150 Control sort() behaviour
154 Restrict unsafe constructs
162 Perl extension allowing use of interpreter based threads from perl
166 Enable/disable UTF-8 (or UTF-EBCDIC) in source code
170 Predeclare global variable names (obsolete)
174 Control VMS-specific language features
178 Control optional warnings
180 =item warnings::register
182 Warnings import function
186 =head2 Standard Modules
188 Standard, bundled modules are all expected to behave in a well-defined
189 manner with respect to namespace pollution because they use the
190 Exporter module. See their own documentation for details.
196 Provide framework for multiple DBMs
198 =item Attribute::Handlers
200 Simpler definition of attribute handlers
204 Load subroutines only on demand
208 Split a package for autoloading
216 Autogenerated data about Perl ops, used to generate bytecode
220 Assemble Perl bytecode
228 Perl compiler's bytecode backend
232 Perl compiler's C backend
236 Perl compiler's optimized C translation backend
240 Walk Perl syntax tree, printing concise info about ops
244 Walk Perl syntax tree, printing debug info about ops
248 Perl compiler backend to produce perl code
250 =item B::Disassembler
252 Disassemble Perl bytecode
260 Show lexical variables used in functions or files
264 Helper module for CC backend
268 Show what stashes are loaded
272 Walk Perl syntax tree, printing terse info about ops
276 Generates cross reference reports for Perl programs
280 Benchmark running times of Perl code
284 Load byte compiled perl code
288 Simple Common Gateway Interface Class
292 Backward compatibility module for CGI.pm
296 CGI routines for writing to the HTTPD (or other) error log
300 Interface to Netscape Cookies
304 CGI Interface for Fast CGI
308 Module to produce nicely formatted HTML code
312 Simple Interface to Server Push
316 Backward compatibility module for defunct CGI::Switch
320 Internal utilities used by CGI module
324 Query, download and build perl modules from CPAN sites
326 =item CPAN::FirstTime
328 Utility for CPAN::Config file Initialization
332 Wrapper around CPAN.pm without using any XS module
336 Warn of errors (from perspective of caller)
340 No user serviceable parts inside
344 Report the search path for a class's ISA tree
348 Declare struct-like datatypes as Perl classes
352 Get pathname of current working directory
356 Programmatic interface to the Perl debugging API (draft, subject to
360 Perl5 access to Berkeley DB version 1.x
362 =item Devel::SelfStubber
364 Generate stubs for a SelfLoading module
368 Modules that calculate message digests
372 Supply object methods for directory handles
376 Provides screen dump of Perl data.
384 Use nice English (or awk) names for ugly punctuation variables
388 Perl module that imports environment variables as scalars or arrays
392 Implements default import method for modules
394 =item Exporter::Heavy
398 =item ExtUtils::Command
400 Utilities to replace common UNIX commands in Makefiles etc.
402 =item ExtUtils::Command::MM
404 Commands for the MM's to use in Makefiles
406 =item ExtUtils::Constant
408 Generate XS code to import C header constants
410 =item ExtUtils::Embed
412 Utilities for embedding Perl in C/C++ applications
414 =item ExtUtils::Install
416 Install files from here to there
418 =item ExtUtils::Installed
420 Inventory management of installed modules
422 =item ExtUtils::Liblist
424 Determine libraries to use and how to use them
428 OS adjusted ExtUtils::MakeMaker subclass
430 =item ExtUtils::MM_Any
432 Platform agnostic MM methods
434 =item ExtUtils::MM_BeOS
436 Methods to override UN*X behaviour in ExtUtils::MakeMaker
438 =item ExtUtils::MM_Cygwin
440 Methods to override UN*X behaviour in ExtUtils::MakeMaker
442 =item ExtUtils::MM_DOS
444 DOS specific subclass of ExtUtils::MM_Unix
446 =item ExtUtils::MM_MacOS
448 Methods to override UN*X behaviour in ExtUtils::MakeMaker
450 =item ExtUtils::MM_NW5
452 Methods to override UN*X behaviour in ExtUtils::MakeMaker
454 =item ExtUtils::MM_OS2
456 Methods to override UN*X behaviour in ExtUtils::MakeMaker
458 =item ExtUtils::MM_UWIN
460 U/WIN specific subclass of ExtUtils::MM_Unix
462 =item ExtUtils::MM_Unix
464 Methods used by ExtUtils::MakeMaker
466 =item ExtUtils::MM_VMS
468 Methods to override UN*X behaviour in ExtUtils::MakeMaker
470 =item ExtUtils::MM_Win32
472 Methods to override UN*X behaviour in ExtUtils::MakeMaker
474 =item ExtUtils::MM_Win95
476 Method to customize MakeMaker for Win9X
480 ExtUtils::MakeMaker subclass for customization
482 =item ExtUtils::MakeMaker
484 Create an extension Makefile
486 =item ExtUtils::Manifest
488 Utilities to write and check a MANIFEST file
490 =item ExtUtils::Mkbootstrap
492 Make a bootstrap file for use by DynaLoader
494 =item ExtUtils::Mksymlists
496 Write linker options files for dynamic extension
498 =item ExtUtils::Packlist
500 Manage .packlist files
502 =item ExtUtils::testlib
504 Add blib/* directories to @INC
508 Replace functions with equivalents which succeed or die
512 Load the C Fcntl.h defines
516 Split a pathname into pieces
518 =item File::CheckTree
520 Run many filetest checks on a tree
524 Compare files or filehandles
528 Copy files or filehandles
532 DOS like globbing and then some
536 Traverse a directory tree.
540 Create or remove directory trees
544 Portably perform operations on file names
546 =item File::Spec::Cygwin
548 Methods for Cygwin file specs
550 =item File::Spec::Epoc
552 Methods for Epoc file specs
554 =item File::Spec::Functions
556 Portably perform operations on file names
558 =item File::Spec::Mac
560 File::Spec for Mac OS (Classic)
562 =item File::Spec::OS2
564 Methods for OS/2 file specs
566 =item File::Spec::Unix
568 File::Spec for Unix, base for other File::Spec modules
570 =item File::Spec::VMS
572 Methods for VMS file specs
574 =item File::Spec::Win32
576 Methods for Win32 file specs
580 Return name and handle of a temporary file safely
584 By-name interface to Perl's built-in stat() functions
588 Keep more files open than the system permits
592 Supply object methods for filehandles
596 Simplified source filtering
600 Locate directory of original perl script
604 Extended processing of command line options
608 Process single-character switches with switch clustering
612 A selection of general-utility hash subroutines
616 Compare 8-bit scalar data according to the current locale
620 Functions for dealing with RFC3066-style language tags
622 =item I18N::LangTags::List
624 Tags and names for human languages
628 Load various IO modules
632 Open a process for both reading and writing
636 Open a process for reading, writing, and error handling
638 =item Locale::Constants
640 Constants for Locale codes
642 =item Locale::Country
644 ISO codes for country identification (ISO 3166)
646 =item Locale::Currency
648 ISO three letter codes for currency identification (ISO 4217)
650 =item Locale::Language
652 ISO two letter codes for language identification (ISO 639)
654 =item Locale::Maketext
656 Framework for localization
658 =item Locale::Maketext::TPJ13
660 Article about software localization
664 ISO codes for script identification (ISO 15924)
668 Arbitrary size floating point math package
672 Arbitrary size integer math package
674 =item Math::BigInt::Calc
676 Pure Perl module to support Math::BigInt
680 Arbitrarily big rationals
684 Complex numbers and associated mathematical functions
688 Trigonometric functions
692 Make functions faster by trading space for time
694 =item Memoize::AnyDBM_File
696 Glue to provide EXISTS for AnyDBM_File for Storable use
698 =item Memoize::Expire
700 Plug-in module for automatic expiration of memoized values
702 =item Memoize::ExpireFile
704 Test for Memoize expiration semantics
706 =item Memoize::ExpireTest
708 Test for Memoize expiration semantics
710 =item Memoize::NDBM_File
712 Glue to provide EXISTS for NDBM_File for Storable use
714 =item Memoize::SDBM_File
716 Glue to provide EXISTS for SDBM_File for Storable use
718 =item Memoize::Storable
720 Store Memoized data in Storable database
724 Tied access to ndbm files
728 Provide a pseudo-class NEXT that allows method redispatch
732 Network Command class (as used by FTP, SMTP etc)
736 Local configuration data for libnet
740 Attempt to evaluate the current host's internet name and domain
752 OO interface to users netrc file
756 Post Office Protocol 3 Client class (RFC1939)
760 Check a remote host for reachability
764 Simple Mail Transfer Protocol Client
768 Time and daytime network client interface
772 By-name interface to Perl's built-in gethost*() functions
776 Libnet Frequently Asked Questions
780 By-name interface to Perl's built-in getnet*() functions
784 By-name interface to Perl's built-in getproto*() functions
788 By-name interface to Perl's built-in getserv*() functions
792 Generic interface to Perl Compiler backends
796 Tied access to odbm files
800 Disable named opcodes when compiling perl code
804 Perl interface to IEEE Std 1003.1
808 On demand loader for PerlIO layers and root of PerlIO::* name space
812 Check pod documents for syntax errors
816 Find POD documents in directory trees
820 Group Perl's functions a la perlfunc.pod
824 Module to convert pod files to HTML
826 =item Pod::InputObjects
828 Objects representing POD input paragraphs, commands, etc.
832 Convert Pod data to formatted Latex
836 Convert POD data to formatted *roff input
840 Parse an LE<lt>E<gt> formatting code in POD text
842 =item Pod::ParseUtils
844 Helpers for POD parsing and conversion
848 Base class for creating POD filters and translators
852 Perl extension for converting Pod to old style Pod.
856 Extract selected sections of POD from input
860 Convert POD data to formatted ASCII text
862 =item Pod::Text::Color
864 Convert POD data to formatted color ASCII text
866 =item Pod::Text::Overstrike
868 Convert POD data to formatted overstrike text
870 =item Pod::Text::Termcap
872 Convert POD data to ASCII text with format escapes
876 Print a usage message from embedded pod documentation
880 Test of various basic POD features in translators.
884 Tied access to sdbm files
888 Compile and execute code in restricted compartments
892 Search for key in dictionary file
896 Save and restore selected file handle
900 Load functions only on demand
904 Run shell commands transparently within perl
908 Load the C socket.h defines and structure manipulators
912 Persistence for Perl data structures
916 A switch statement for Perl
920 Manipulate Perl symbols and their names
922 =item Term::ANSIColor
924 Color screen output using ANSI escape sequences
928 Perl termcap interface
932 Perl word completion module
936 Perl interface to various C<readline> packages. If
940 Provides a simple framework for writing test scripts
944 Backend for building test libraries
948 Run perl standard test scripts with statistics
950 =item Test::Harness::Assert
954 =item Test::Harness::Iterator
956 Internal Test::Harness Iterator
958 =item Test::Harness::Straps
960 Detailed analysis of test results
964 Yet another framework for writing test scripts
968 Basic utilities for writing tests.
972 A tutorial about writing really basic tests
976 Create an abbreviation table from a list
980 Extract delimited text sequences from strings.
982 =item Text::ParseWords
984 Parse text into an array of tokens or array of arrays
988 Implementation of the Soundex Algorithm as Described by Knuth
992 Expand and unexpand tabs per the unix expand(1) and unexpand(1)
996 Line wrapping to form simple paragraphs
1000 Manipulate threads in Perl
1006 =item Thread::Semaphore
1008 Thread-safe semaphores
1012 Base class for tied arrays
1016 Access the lines of a disk file via a Perl array
1020 Base class definitions for tied handles
1024 Base class definitions for tied hashes
1028 Add data to hash when needed
1032 Use references as hash keys
1036 Base class definitions for tied scalars
1038 =item Tie::SubstrHash
1040 Fixed-table-size, fixed-key-length hashing
1044 Efficiently compute time from local and GMT time
1048 By-name interface to Perl's built-in gmtime() function
1050 =item Time::localtime
1052 By-name interface to Perl's built-in localtime() function
1056 Internal object used by Time::gmtime and Time::localtime
1060 Base class for ALL classes (blessed references)
1062 =item Unicode::Collate
1064 Unicode Collation Algorithm
1068 Unicode character database
1072 By-name interface to Perl's built-in getgr*() functions
1076 By-name interface to Perl's built-in getpw*() functions
1080 Interfaces to some Win32 API Functions
1084 To find out I<all> modules installed on your system, including
1085 those without documentation or outside the standard release,
1088 % find `perl -e 'print "@INC"'` -name '*.pm' -print
1090 They should all have their own documentation installed and accessible
1091 via your system man(1) command. If you do not have a B<find>
1092 program, you can use the Perl B<find2perl> program instead, which
1093 generates Perl code as output you can run through perl. If you
1094 have a B<man> program but it doesn't find your modules, you'll have
1095 to fix your manpath. See L<perl> for details. If you have no
1096 system B<man> command, you might try the B<perldoc> program.
1098 =head2 Extension Modules
1100 Extension modules are written in C (or a mix of Perl and C). They
1101 are usually dynamically loaded into Perl if and when you need them,
1102 but may also be linked in statically. Supported extension modules
1103 include Socket, Fcntl, and POSIX.
1105 Many popular C extension modules do not come bundled (at least, not
1106 completely) due to their sizes, volatility, or simply lack of time
1107 for adequate testing and configuration across the multitude of
1108 platforms on which Perl was beta-tested. You are encouraged to
1109 look for them on CPAN (described below), or using web search engines
1110 like Alta Vista or Deja News.
1114 CPAN stands for Comprehensive Perl Archive Network; it's a globally
1115 replicated trove of Perl materials, including documentation, style
1116 guides, tricks and traps, alternate ports to non-Unix systems and
1117 occasional binary distributions for these. Search engines for
1118 CPAN can be found at http://www.cpan.org/
1120 Most importantly, CPAN includes around a thousand unbundled modules,
1121 some of which require a C compiler to build. Major categories of
1128 Language Extensions and Documentation Tools
1136 Operating System Interfaces
1140 Networking, Device Control (modems) and InterProcess Communication
1144 Data Types and Data Type Utilities
1156 Interfaces to / Emulations of Other Programming Languages
1160 File Names, File Systems and File Locking (see also File Handles)
1164 String Processing, Language Text Processing, Parsing, and Searching
1168 Option, Argument, Parameter, and Configuration File Processing
1172 Internationalization and Locale
1176 Authentication, Security, and Encryption
1180 World Wide Web, HTML, HTTP, CGI, MIME
1184 Server and Daemon Utilities
1188 Archiving and Compression
1192 Images, Pixmap and Bitmap Manipulation, Drawing, and Graphing
1196 Mail and Usenet News
1200 Control Flow Utilities (callbacks and exceptions etc)
1204 File Handle and Input/Output Stream Utilities
1208 Miscellaneous Modules
1212 Registered CPAN sites as of this writing include the following.
1213 You should try to choose one close to you:
1223 ftp://ftp.is.co.za/programming/perl/CPAN/
1224 ftp://ftp.mweb.co.za/pub/mirrors/cpan/
1225 ftp://ftp.saix.net/pub/CPAN/
1226 ftp://ftp.sun.ac.za/CPAN/CPAN/
1238 ftp://freesoft.cei.gov.cn/pub/languages/perl/CPAN/
1239 http://www2.linuxforum.net/mirror/CPAN/
1240 http://cpan.shellhung.org/
1241 ftp://ftp.shellhung.org/pub/CPAN
1247 http://cpan.in.freeos.com
1248 ftp://cpan.in.freeos.com/pub/CPAN/
1254 http://cpan.itb.web.id/
1255 ftp://mirrors.piksi.itb.ac.id/CPAN/
1256 http://CPAN.mweb.co.id/
1257 ftp://ftp.mweb.co.id/pub/languages/perl/CPAN/
1263 http://www.iglu.org.il:/pub/CPAN/
1264 ftp://ftp.iglu.org.il/pub/CPAN/
1265 http://cpan.lerner.co.il/
1266 http://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/
1267 ftp://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/
1273 ftp://ftp.u-aizu.ac.jp/pub/CPAN
1274 ftp://ftp.kddlabs.co.jp/CPAN/
1275 http://mirror.nucba.ac.jp/mirror/Perl/
1276 ftp://mirror.nucba.ac.jp/mirror/Perl/
1277 ftp://ftp.meisei-u.ac.jp/pub/CPAN/
1278 ftp://ftp.ayamura.org/pub/CPAN/
1279 ftp://ftp.jaist.ac.jp/pub/lang/perl/CPAN/
1280 ftp://ftp.dti.ad.jp/pub/lang/CPAN/
1281 ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/
1287 http://mirror.Mazic.org/pub/CPAN
1288 ftp://mirror.Mazic.org/pub/CPAN
1294 http://www.adzu.edu.ph/CPAN
1300 http://cpan.tomsk.ru
1301 ftp://cpan.tomsk.ru/pub/CPAN
1307 ftp://ftp.isu.net.sa/pub/CPAN/
1313 http://cpan.hjc.edu.sg
1319 http://CPAN.bora.net/
1320 ftp://ftp.bora.net/pub/CPAN/
1321 http://ftp.kornet.net/pub/CPAN/
1322 ftp://ftp.kornet.net/pub/CPAN/
1323 ftp://ftp.nuri.net/pub/CPAN/
1324 http://ftp.xgate.co.kr/cpan/
1325 ftp://ftp.xgate.co.kr/pub/mirror/CPAN
1331 ftp://ftp.ee.ncku.edu.tw/pub/perl/CPAN/
1332 ftp://ftp1.sinica.edu.tw/pub1/perl/CPAN/
1333 http://ftp.tku.edu.tw/pub/CPAN/
1334 ftp://ftp.tku.edu.tw/pub/CPAN/
1340 ftp://ftp.cs.riubon.ac.th/pub/mirrors/CPAN/
1344 =head2 Central America
1352 ftp://ftp.linux.co.cr/mirrors/CPAN/
1353 http://ftp.ucr.ac.cr/Unix/CPAN/
1354 ftp://ftp.ucr.ac.cr/pub/Unix/CPAN/
1366 ftp://ftp.tuwien.ac.at/pub/CPAN/
1372 http://ftp.easynet.be/pub/CPAN/
1373 ftp://ftp.easynet.be/pub/CPAN/
1374 http://cpan.skynet.be
1375 ftp://ftp.skynet.be/pub/CPAN
1376 ftp://ftp.kulnet.kuleuven.ac.be/pub/mirror/CPAN/
1382 http://cpan.lirex.net/
1383 ftp://ftp.lirex.net/pub/mirrors/CPAN
1389 ftp://ftp.linux.hr/pub/CPAN/
1395 http://ftp.fi.muni.cz/pub/CPAN/
1396 ftp://ftp.fi.muni.cz/pub/CPAN/
1397 ftp://sunsite.mff.cuni.cz/MIRRORS/ftp.funet.fi/pub/languages/perl/CPAN/
1403 http://mirrors.sunsite.dk/cpan/
1404 ftp://sunsite.dk/mirrors/cpan/
1405 http://www.cpan.dk/CPAN/
1406 ftp://www.cpan.dk/ftp.cpan.org/CPAN/
1412 ftp://ftp.ut.ee/pub/languages/perl/CPAN/
1418 ftp://ftp.funet.fi/pub/languages/perl/CPAN/
1419 http://cpan.kpnqwest.fi/
1425 http://cpan.mirrors.easynet.fr/
1426 ftp://cpan.mirrors.easynet.fr/pub/ftp.cpan.org/
1427 ftp://ftp.club-internet.fr/pub/perl/CPAN/
1429 ftp://ftp.lip6.fr/pub/perl/CPAN/
1430 ftp://ftp.oleane.net/pub/mirrors/CPAN/
1431 ftp://ftp.pasteur.fr/pub/computing/CPAN/
1432 http://cpan.cict.fr/
1433 ftp://cpan.cict.fr/pub/CPAN/
1434 ftp://ftp.uvsq.fr/pub/perl/CPAN/
1440 ftp://ftp.rz.ruhr-uni-bochum.de/pub/CPAN/
1441 ftp://ftp.freenet.de/pub/ftp.cpan.org/pub/CPAN/
1442 ftp://ftp.uni-erlangen.de/pub/source/CPAN/
1443 ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/CPAN
1444 ftp://ftp.gigabell.net/pub/CPAN/
1445 http://pandemonium.tiscali.de/pub/CPAN/
1446 ftp://pandemonium.tiscali.de/pub/CPAN/
1447 http://ftp.gwdg.de/pub/languages/perl/CPAN/
1448 ftp://ftp.gwdg.de/pub/languages/perl/CPAN/
1449 ftp://ftp.uni-hamburg.de/pub/soft/lang/perl/CPAN/
1450 ftp://ftp.leo.org/pub/CPAN/
1451 http://cpan.noris.de/
1452 ftp://cpan.noris.de/pub/CPAN/
1453 ftp://ftp.mpi-sb.mpg.de/pub/perl/CPAN/
1454 ftp://ftp.gmd.de/mirrors/CPAN/
1460 ftp://ftp.acn.gr/pub/lang/perl/CPAN
1461 ftp://ftp.forthnet.gr/pub/languages/perl/CPAN
1462 ftp://ftp.ntua.gr/pub/lang/perl/
1468 http://cpan.artifact.hu/
1469 ftp://cpan.artifact.hu/CPAN/
1470 http://ftp.kfki.hu/packages/perl/CPAN/
1471 ftp://ftp.kfki.hu/pub/packages/perl/CPAN/
1477 http://ftp.rhnet.is/pub/CPAN/
1478 ftp://ftp.rhnet.is/pub/CPAN/
1484 http://cpan.indigo.ie/
1485 ftp://cpan.indigo.ie/pub/CPAN/
1486 http://sunsite.compapp.dcu.ie/pub/perl/
1487 ftp://sunsite.compapp.dcu.ie/pub/perl/
1493 http://cpan.nettuno.it/
1494 http://gusp.dyndns.org/CPAN/
1495 ftp://gusp.dyndns.org/pub/CPAN
1496 http://softcity.iol.it/cpan
1497 ftp://softcity.iol.it/pub/cpan
1498 ftp://ftp.unina.it/pub/Other/CPAN/CPAN/
1499 ftp://ftp.unipi.it/pub/mirror/perl/CPAN/
1500 ftp://cis.uniRoma2.it/CPAN/
1501 ftp://ftp.edisontel.it/pub/CPAN_Mirror/
1502 ftp://ftp.flashnet.it/pub/CPAN/
1508 http://kvin.lv/pub/CPAN/
1514 ftp://ftp.unix.lt/pub/CPAN/
1520 ftp://download.xs4all.nl/pub/mirror/CPAN/
1521 ftp://ftp.nl.uu.net/pub/CPAN/
1522 ftp://ftp.nluug.nl/pub/languages/perl/CPAN/
1523 ftp://ftp.cpan.nl/pub/CPAN/
1524 http://www.cs.uu.nl/mirror/CPAN/
1525 ftp://ftp.cs.uu.nl/mirror/CPAN/
1531 ftp://ftp.uninett.no/pub/languages/perl/CPAN
1532 ftp://ftp.uit.no/pub/languages/perl/cpan/
1538 ftp://ftp.pk.edu.pl/pub/lang/perl/CPAN/
1539 ftp://ftp.mega.net.pl/pub/mirrors/ftp.perl.com/
1540 ftp://ftp.man.torun.pl/pub/doc/CPAN/
1541 ftp://sunsite.icm.edu.pl/pub/CPAN/
1547 ftp://ftp.ua.pt/pub/CPAN/
1548 ftp://perl.di.uminho.pt/pub/CPAN/
1549 http://cpan.dei.uc.pt/
1550 ftp://ftp.dei.uc.pt/pub/CPAN
1551 ftp://ftp.ist.utl.pt/pub/CPAN/
1553 ftp://cpan.ip.pt/pub/cpan/
1554 ftp://ftp.netc.pt/pub/CPAN/
1555 ftp://ftp.up.pt/pub/CPAN
1561 ftp://ftp.kappa.ro/pub/mirrors/ftp.perl.org/pub/CPAN/
1562 ftp://ftp.dntis.ro/pub/cpan/
1563 ftp://ftp.dnttm.ro/pub/CPAN/
1564 ftp://ftp.lasting.ro/pub/CPAN
1565 ftp://ftp.timisoara.roedu.net/mirrors/CPAN/
1571 ftp://ftp.chg.ru/pub/lang/perl/CPAN/
1572 http://cpan.rinet.ru/
1573 ftp://cpan.rinet.ru/pub/mirror/CPAN/
1574 ftp://ftp.aha.ru/pub/CPAN/
1575 http://cpan.sai.msu.ru/
1576 ftp://ftp.sai.msu.su/pub/lang/perl/CPAN/
1582 http://ftp.cvt.stuba.sk/pub/CPAN/
1583 ftp://ftp.cvt.stuba.sk/pub/CPAN/
1589 ftp://ftp.arnes.si/software/perl/CPAN/
1595 http://cpan.imasd.elmundo.es/
1596 ftp://ftp.rediris.es/mirror/CPAN/
1597 ftp://ftp.etse.urv.es/pub/perl/
1603 http://ftp.du.se/CPAN/
1604 ftp://ftp.du.se/pub/CPAN/
1605 ftp://mirror.dataphone.se/pub/CPAN
1606 ftp://ftp.sunet.se/pub/lang/perl/CPAN/
1612 ftp://ftp.danyk.ch/CPAN/
1613 ftp://sunsite.cnlab-switch.ch/mirror/CPAN/
1619 ftp://sunsite.bilkent.edu.tr/pub/languages/CPAN/
1627 ftp://ftp.perl.org.ua/pub/CPAN/
1633 http://www.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN
1634 ftp://ftp.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN/
1635 http://cpan.teleglobe.net/
1636 ftp://cpan.teleglobe.net/pub/CPAN
1637 http://cpan.crazygreek.co.uk
1638 ftp://ftp.demon.co.uk/pub/CPAN/
1639 ftp://ftp.flirble.org/pub/languages/perl/CPAN/
1640 ftp://ftp.plig.org/pub/CPAN/
1641 http://mirror.uklinux.net/CPAN/
1642 ftp://mirror.uklinux.net/pub/CPAN/
1643 http://cpan.mirrors.clockerz.net/
1644 ftp://ftp.clockerz.net/pub/CPAN/
1645 ftp://usit.shef.ac.uk/pub/packages/CPAN/
1649 =head2 North America
1663 http://sunsite.ualberta.ca/pub/Mirror/CPAN/
1664 ftp://sunsite.ualberta.ca/pub/Mirror/CPAN/
1670 http://theoryx5.uwinnipeg.ca/pub/CPAN/
1671 ftp://theoryx5.uwinnipeg.ca/pub/CPAN/
1677 ftp://cpan.chebucto.ns.ca/pub/CPAN/
1683 ftp://ftp.crc.ca/pub/CPAN/
1689 http://cpan.mirror.smartworker.org/
1697 http://cpan.azc.uam.mx
1698 ftp://cpan.azc.uam.mx/mirrors/CPAN
1699 http://cpan.unam.mx/
1700 ftp://cpan.unam.mx/pub/CPAN
1701 http://www.msg.com.mx/CPAN/
1702 ftp://ftp.msg.com.mx/pub/CPAN/
1714 http://mirror.hiwaay.net/CPAN/
1715 ftp://mirror.hiwaay.net/CPAN/
1721 http://www.cpan.org/
1722 ftp://cpan.valueclick.com/pub/CPAN/
1723 http://mirrors.gossamer-threads.com/CPAN
1724 ftp://cpan.nas.nasa.gov/pub/perl/CPAN/
1725 http://mirrors.kernel.org/cpan/
1726 ftp://mirrors.kernel.org/pub/CPAN
1727 http://cpan.digisle.net/
1728 ftp://cpan.digisle.net/pub/CPAN
1729 http://www.perl.com/CPAN/
1730 http://download.sourceforge.net/mirrors/CPAN/
1736 ftp://ftp.cs.colorado.edu/pub/perl/CPAN/
1742 http://ftp.lug.udel.edu/pub/CPAN
1743 ftp://ftp.lug.udel.edu/pub/CPAN
1747 District of Columbia
1749 ftp://ftp.dc.aleron.net/pub/CPAN/
1755 ftp://ftp.cise.ufl.edu/pub/mirrors/CPAN/
1756 http://mirror.csit.fsu.edu/pub/CPAN/
1757 ftp://mirror.csit.fsu.edu/pub/CPAN/
1763 http://uiarchive.uiuc.edu/mirrors/ftp/cpan.cse.msu.edu/
1764 ftp://uiarchive.uiuc.edu/mirrors/ftp/cpan.cse.msu.edu/
1770 ftp://ftp.uwsg.iu.edu/pub/perl/CPAN/
1771 http://cpan.netnitco.net/
1772 ftp://cpan.netnitco.net/pub/mirrors/CPAN/
1773 http://archive.progeny.com/CPAN/
1774 ftp://archive.progeny.com/CPAN/
1775 ftp://cpan.in-span.net/
1776 http://csociety-ftp.ecn.purdue.edu/pub/CPAN
1777 ftp://csociety-ftp.ecn.purdue.edu/pub/CPAN
1783 http://cpan.uky.edu/
1784 ftp://cpan.uky.edu/pub/CPAN/
1790 ftp://ftp.ccs.neu.edu/net/mirrors/ftp.funet.fi/pub/languages/perl/CPAN/
1791 http://cpan.mirrors.netnumina.com/
1792 ftp://mirrors.netnumina.com/cpan/
1798 ftp://cpan.cse.msu.edu/
1804 ftp://ftp.cpanel.net/pub/CPAN/
1805 http://cpan.teleglobe.net/
1806 ftp://cpan.teleglobe.net/pub/CPAN
1812 ftp://ftp.exobit.org/pub/perl/CPAN
1813 http://cpan.belfry.net/
1814 http://cpan.thepirtgroup.com/
1815 ftp://cpan.thepirtgroup.com/
1816 ftp://ftp.stealth.net/pub/CPAN/
1817 http://www.rge.com/pub/languages/perl/
1818 ftp://ftp.rge.com/pub/languages/perl/
1819 ftp://mirrors.cloud9.net/pub/mirrors/CPAN/
1825 ftp://ftp.duke.edu/pub/perl/
1831 ftp://ftp.loaded.net/pub/CPAN/
1837 ftp://ftp.ou.edu/mirrors/CPAN/
1843 ftp://ftp.orst.edu/pub/CPAN
1849 http://ftp.epix.net/CPAN/
1850 ftp://ftp.epix.net/pub/languages/perl/
1851 http://mirrors.phenominet.com/pub/CPAN/
1852 ftp://mirrors.phenominet.com/pub/CPAN/
1853 http://cpan.pair.com/
1854 ftp://cpan.pair.com/pub/CPAN/
1855 ftp://carroll.cac.psu.edu/pub/CPAN/
1861 ftp://ftp.sunsite.utk.edu/pub/CPAN/
1867 http://ftp.sedl.org/pub/mirrors/CPAN/
1868 ftp://mirror.telentente.com/pub/CPAN
1874 ftp://mirror.xmission.com/CPAN/
1880 http://mirrors.rcn.net/pub/lang/CPAN/
1881 ftp://mirrors.rcn.net/pub/lang/CPAN/
1882 http://perl.secsup.org/
1883 ftp://perl.secsup.org/pub/perl/
1884 http://mirrors.phihost.com/CPAN/
1885 ftp://mirrors.phihost.com/CPAN/
1886 ftp://ruff.cs.jmu.edu/pub/CPAN/
1887 http://perl.Liquidation.com/CPAN/
1893 http://cpan.llarian.net/
1894 ftp://cpan.llarian.net/pub/CPAN/
1895 http://cpan.mirrorcentral.com/
1896 ftp://ftp.mirrorcentral.com/pub/CPAN/
1897 ftp://ftp-mirror.internap.com/pub/CPAN/
1903 http://mirror.sit.wisc.edu/pub/CPAN/
1904 ftp://mirror.sit.wisc.edu/pub/CPAN/
1916 http://ftp.planetmirror.com/pub/CPAN/
1917 ftp://ftp.planetmirror.com/pub/CPAN/
1918 ftp://mirror.aarnet.edu.au/pub/perl/CPAN/
1919 ftp://cpan.topend.com.au/pub/CPAN/
1925 ftp://ftp.auckland.ac.nz/pub/perl/CPAN/
1929 =head2 South America
1937 ftp://mirrors.bannerlandia.com.ar/mirrors/CPAN/
1943 ftp://cpan.pop-mg.com.br/pub/CPAN/
1944 ftp://ftp.matrix.com.br/pub/perl/CPAN/
1950 ftp://ftp.psinet.cl/pub/programming/perl/CPAN/
1954 For an up-to-date listing of CPAN sites,
1955 see http://www.cpan.org/SITES or ftp://www.cpan.org/SITES .
1957 =head1 Modules: Creation, Use, and Abuse
1959 (The following section is borrowed directly from Tim Bunce's modules
1960 file, available at your nearest CPAN site.)
1962 Perl implements a class using a package, but the presence of a
1963 package doesn't imply the presence of a class. A package is just a
1964 namespace. A class is a package that provides subroutines that can be
1965 used as methods. A method is just a subroutine that expects, as its
1966 first argument, either the name of a package (for "static" methods),
1967 or a reference to something (for "virtual" methods).
1969 A module is a file that (by convention) provides a class of the same
1970 name (sans the .pm), plus an import method in that class that can be
1971 called to fetch exported symbols. This module may implement some of
1972 its methods by loading dynamic C or C++ objects, but that should be
1973 totally transparent to the user of the module. Likewise, the module
1974 might set up an AUTOLOAD function to slurp in subroutine definitions on
1975 demand, but this is also transparent. Only the F<.pm> file is required to
1976 exist. See L<perlsub>, L<perltoot>, and L<AutoLoader> for details about
1977 the AUTOLOAD mechanism.
1979 =head2 Guidelines for Module Creation
1985 Do similar modules already exist in some form?
1987 If so, please try to reuse the existing modules either in whole or
1988 by inheriting useful features into a new class. If this is not
1989 practical try to get together with the module authors to work on
1990 extending or enhancing the functionality of the existing modules.
1991 A perfect example is the plethora of packages in perl4 for dealing
1992 with command line options.
1994 If you are writing a module to expand an already existing set of
1995 modules, please coordinate with the author of the package. It
1996 helps if you follow the same naming scheme and module interaction
1997 scheme as the original author.
2001 Try to design the new module to be easy to extend and reuse.
2003 Try to C<use warnings;> (or C<use warnings qw(...);>).
2004 Remember that you can add C<no warnings qw(...);> to individual blocks
2005 of code that need less warnings.
2007 Use blessed references. Use the two argument form of bless to bless
2008 into the class name given as the first parameter of the constructor,
2013 return bless {}, $class;
2016 or even this if you'd like it to be used as either a static
2017 or a virtual method.
2021 my $class = ref($self) || $self;
2022 return bless {}, $class;
2025 Pass arrays as references so more parameters can be added later
2026 (it's also faster). Convert functions into methods where
2027 appropriate. Split large methods into smaller more flexible ones.
2028 Inherit methods from other modules if appropriate.
2030 Avoid class name tests like: C<die "Invalid" unless ref $ref eq 'FOO'>.
2031 Generally you can delete the C<eq 'FOO'> part with no harm at all.
2032 Let the objects look after themselves! Generally, avoid hard-wired
2033 class names as far as possible.
2035 Avoid C<< $r->Class::func() >> where using C<@ISA=qw(... Class ...)> and
2036 C<< $r->func() >> would work (see L<perlbot> for more details).
2038 Use autosplit so little used or newly added functions won't be a
2039 burden to programs that don't use them. Add test functions to
2040 the module after __END__ either using AutoSplit or by saying:
2042 eval join('',<main::DATA>) || die $@ unless caller();
2044 Does your module pass the 'empty subclass' test? If you say
2045 C<@SUBCLASS::ISA = qw(YOURCLASS);> your applications should be able
2046 to use SUBCLASS in exactly the same way as YOURCLASS. For example,
2047 does your application still work if you change: C<$obj = new YOURCLASS;>
2048 into: C<$obj = new SUBCLASS;> ?
2050 Avoid keeping any state information in your packages. It makes it
2051 difficult for multiple other packages to use yours. Keep state
2052 information in objects.
2056 Try to C<use strict;> (or C<use strict qw(...);>).
2057 Remember that you can add C<no strict qw(...);> to individual blocks
2058 of code that need less strictness.
2062 Follow the guidelines in the perlstyle(1) manual.
2068 Some simple style guidelines
2070 The perlstyle manual supplied with Perl has many helpful points.
2072 Coding style is a matter of personal taste. Many people evolve their
2073 style over several years as they learn what helps them write and
2074 maintain good code. Here's one set of assorted suggestions that
2075 seem to be widely used by experienced developers:
2077 Use underscores to separate words. It is generally easier to read
2078 $var_names_like_this than $VarNamesLikeThis, especially for
2079 non-native speakers of English. It's also a simple rule that works
2080 consistently with VAR_NAMES_LIKE_THIS.
2082 Package/Module names are an exception to this rule. Perl informally
2083 reserves lowercase module names for 'pragma' modules like integer
2084 and strict. Other modules normally begin with a capital letter and
2085 use mixed case with no underscores (need to be short and portable).
2087 You may find it helpful to use letter case to indicate the scope
2088 or nature of a variable. For example:
2090 $ALL_CAPS_HERE constants only (beware clashes with Perl vars)
2091 $Some_Caps_Here package-wide global/static
2092 $no_caps_here function scope my() or local() variables
2094 Function and method names seem to work best as all lowercase.
2095 e.g., C<< $obj->as_string() >>.
2097 You can use a leading underscore to indicate that a variable or
2098 function should not be used outside the package that defined it.
2102 Select what to export.
2104 Do NOT export method names!
2106 Do NOT export anything else by default without a good reason!
2108 Exports pollute the namespace of the module user. If you must
2109 export try to use @EXPORT_OK in preference to @EXPORT and avoid
2110 short or common names to reduce the risk of name clashes.
2112 Generally anything not exported is still accessible from outside the
2113 module using the ModuleName::item_name (or C<< $blessed_ref->method >>)
2114 syntax. By convention you can use a leading underscore on names to
2115 indicate informally that they are 'internal' and not for public use.
2117 (It is actually possible to get private functions by saying:
2118 C<my $subref = sub { ... }; &$subref;>. But there's no way to call that
2119 directly as a method, because a method must have a name in the symbol
2122 As a general rule, if the module is trying to be object oriented
2123 then export nothing. If it's just a collection of functions then
2124 @EXPORT_OK anything but use @EXPORT with caution.
2128 Select a name for the module.
2130 This name should be as descriptive, accurate, and complete as
2131 possible. Avoid any risk of ambiguity. Always try to use two or
2132 more whole words. Generally the name should reflect what is special
2133 about what the module does rather than how it does it. Please use
2134 nested module names to group informally or categorize a module.
2135 There should be a very good reason for a module not to have a nested name.
2136 Module names should begin with a capital letter.
2138 Having 57 modules all called Sort will not make life easy for anyone
2139 (though having 23 called Sort::Quick is only marginally better :-).
2140 Imagine someone trying to install your module alongside many others.
2141 If in any doubt ask for suggestions in comp.lang.perl.misc.
2143 If you are developing a suite of related modules/classes it's good
2144 practice to use nested classes with a common prefix as this will
2145 avoid namespace clashes. For example: Xyz::Control, Xyz::View,
2146 Xyz::Model etc. Use the modules in this list as a naming guide.
2148 If adding a new module to a set, follow the original author's
2149 standards for naming modules and the interface to methods in
2152 If developing modules for private internal or project specific use,
2153 that will never be released to the public, then you should ensure
2154 that their names will not clash with any future public module. You
2155 can do this either by using the reserved Local::* category or by
2156 using a category name that includes an underscore like Foo_Corp::*.
2158 To be portable each component of a module name should be limited to
2159 11 characters. If it might be used on MS-DOS then try to ensure each is
2160 unique in the first 8 characters. Nested modules make this easier.
2164 Have you got it right?
2166 How do you know that you've made the right decisions? Have you
2167 picked an interface design that will cause problems later? Have
2168 you picked the most appropriate name? Do you have any questions?
2170 The best way to know for sure, and pick up many helpful suggestions,
2171 is to ask someone who knows. Comp.lang.perl.misc is read by just about
2172 all the people who develop modules and it's the best place to ask.
2174 All you need to do is post a short summary of the module, its
2175 purpose and interfaces. A few lines on each of the main methods is
2176 probably enough. (If you post the whole module it might be ignored
2177 by busy people - generally the very people you want to read it!)
2179 Don't worry about posting if you can't say when the module will be
2180 ready - just say so in the message. It might be worth inviting
2181 others to help you, they may be able to complete it for you!
2185 README and other Additional Files.
2187 It's well known that software developers usually fully document the
2188 software they write. If, however, the world is in urgent need of
2189 your software and there is not enough time to write the full
2190 documentation please at least provide a README file containing:
2196 A description of the module/package/extension etc.
2200 A copyright notice - see below.
2204 Prerequisites - what else you may need to have.
2208 How to build it - possible changes to Makefile.PL etc.
2216 Recent changes in this release, especially incompatibilities
2220 Changes / enhancements you plan to make in the future.
2224 If the README file seems to be getting too large you may wish to
2225 split out some of the sections into separate files: INSTALL,
2232 Adding a Copyright Notice.
2234 How you choose to license your work is a personal decision.
2235 The general mechanism is to assert your Copyright and then make
2236 a declaration of how others may copy/use/modify your work.
2238 Perl, for example, is supplied with two types of licence: The GNU
2239 GPL and The Artistic Licence (see the files README, Copying, and
2240 Artistic). Larry has good reasons for NOT just using the GNU GPL.
2242 My personal recommendation, out of respect for Larry, Perl, and the
2243 Perl community at large is to state something simply like:
2245 Copyright (c) 1995 Your Name. All rights reserved.
2246 This program is free software; you can redistribute it and/or
2247 modify it under the same terms as Perl itself.
2249 This statement should at least appear in the README file. You may
2250 also wish to include it in a Copying file and your source files.
2251 Remember to include the other words in addition to the Copyright.
2255 Give the module a version/issue/release number.
2257 To be fully compatible with the Exporter and MakeMaker modules you
2258 should store your module's version number in a non-my package
2259 variable called $VERSION. This should be a floating point
2260 number with at least two digits after the decimal (i.e., hundredths,
2261 e.g, C<$VERSION = "0.01">). Don't use a "1.3.2" style version.
2262 See L<Exporter> for details.
2264 It may be handy to add a function or method to retrieve the number.
2265 Use the number in announcements and archive file names when
2266 releasing the module (ModuleName-1.02.tar.Z).
2267 See perldoc ExtUtils::MakeMaker.pm for details.
2271 How to release and distribute a module.
2273 It's good idea to post an announcement of the availability of your
2274 module (or the module itself if small) to the comp.lang.perl.announce
2275 Usenet newsgroup. This will at least ensure very wide once-off
2278 If possible, register the module with CPAN. You should
2279 include details of its location in your announcement.
2281 Some notes about ftp archives: Please use a long descriptive file
2282 name that includes the version number. Most incoming directories
2283 will not be readable/listable, i.e., you won't be able to see your
2284 file after uploading it. Remember to send your email notification
2285 message as soon as possible after uploading else your file may get
2286 deleted automatically. Allow time for the file to be processed
2287 and/or check the file has been processed before announcing its
2290 FTP Archives for Perl Modules:
2292 Follow the instructions and links on:
2294 http://www.cpan.org/modules/00modlist.long.html
2295 http://www.cpan.org/modules/04pause.html
2297 or upload to one of these sites:
2299 https://pause.kbx.de/pause/
2300 http://pause.perl.org/pause/
2302 and notify <modules@perl.org>.
2304 By using the WWW interface you can ask the Upload Server to mirror
2305 your modules from your ftp or WWW site into your own directory on
2308 Please remember to send me an updated entry for the Module list!
2312 Take care when changing a released module.
2314 Always strive to remain compatible with previous released versions.
2315 Otherwise try to add a mechanism to revert to the
2316 old behavior if people rely on it. Document incompatible changes.
2322 =head2 Guidelines for Converting Perl 4 Library Scripts into Modules
2328 There is no requirement to convert anything.
2330 If it ain't broke, don't fix it! Perl 4 library scripts should
2331 continue to work with no problems. You may need to make some minor
2332 changes (like escaping non-array @'s in double quoted strings) but
2333 there is no need to convert a .pl file into a Module for just that.
2337 Consider the implications.
2339 All Perl applications that make use of the script will need to
2340 be changed (slightly) if the script is converted into a module. Is
2341 it worth it unless you plan to make other changes at the same time?
2345 Make the most of the opportunity.
2347 If you are going to convert the script to a module you can use the
2348 opportunity to redesign the interface. The guidelines for module
2349 creation above include many of the issues you should consider.
2353 The pl2pm utility will get you started.
2355 This utility will read *.pl files (given as parameters) and write
2356 corresponding *.pm files. The pl2pm utilities does the following:
2362 Adds the standard Module prologue lines
2366 Converts package specifiers from ' to ::
2370 Converts die(...) to croak(...)
2374 Several other minor changes
2378 Being a mechanical process pl2pm is not bullet proof. The converted
2379 code will need careful checking, especially any package statements.
2380 Don't delete the original .pl file till the new .pm one works!
2384 =head2 Guidelines for Reusing Application Code
2390 Complete applications rarely belong in the Perl Module Library.
2394 Many applications contain some Perl code that could be reused.
2396 Help save the world! Share your code in a form that makes it easy
2401 Break-out the reusable code into one or more separate module files.
2405 Take the opportunity to reconsider and redesign the interfaces.
2409 In some cases the 'application' can then be reduced to a small
2411 fragment of code built on top of the reusable modules. In these cases
2412 the application could invoked as:
2414 % perl -e 'use Module::Name; method(@ARGV)' ...
2416 % perl -mModule::Name ... (in perl5.002 or higher)
2422 Perl does not enforce private and public parts of its modules as you may
2423 have been used to in other languages like C++, Ada, or Modula-17. Perl
2424 doesn't have an infatuation with enforced privacy. It would prefer
2425 that you stayed out of its living room because you weren't invited, not
2426 because it has a shotgun.
2428 The module and its user have a contract, part of which is common law,
2429 and part of which is "written". Part of the common law contract is
2430 that a module doesn't pollute any namespace it wasn't asked to. The
2431 written contract for the module (A.K.A. documentation) may make other
2432 provisions. But then you know when you C<use RedefineTheWorld> that
2433 you're redefining the world and willing to take the consequences.