2 Generated by perlmodlib.PL -- DO NOT EDIT!
6 perlmodlib - constructing new Perl modules and finding existing ones
8 =head1 THE PERL MODULE LIBRARY
10 Many modules are included in the Perl distribution. These are described
11 below, and all end in F<.pm>. You may discover compiled library
12 files (usually ending in F<.so>) or small pieces of modules to be
13 autoloaded (ending in F<.al>); these were automatically generated
14 by the installation process. You may also discover files in the
15 library directory that end in either F<.pl> or F<.ph>. These are
16 old libraries supplied so that old programs that use them still
17 run. The F<.pl> files will all eventually be converted into standard
18 modules, and the F<.ph> files made by B<h2ph> will probably end up
19 as extension modules made by B<h2xs>. (Some F<.ph> values may
20 already be available through the POSIX, Errno, or Fcntl modules.)
21 The B<pl2pm> file in the distribution may help in your conversion,
22 but it's just a mechanical process and therefore far from bulletproof.
24 =head2 Pragmatic Modules
26 They work somewhat like compiler directives (pragmata) in that they
27 tend to affect the compilation of your program, and thus will usually
28 work well only when used within a C<use>, or C<no>. Most of these
29 are lexically scoped, so an inner BLOCK may countermand them
36 which lasts until the end of that BLOCK.
38 Some pragmas are lexically scoped--typically those that affect the
39 C<$^H> hints variable. Others affect the current package instead,
40 like C<use vars> and C<use subs>, which allow you to predeclare a
41 variables or subroutines within a particular I<file> rather than
42 just a block. Such declarations are effective for the entire file
43 for which they were declared. You cannot rescind them with C<no
46 The following pragmas are defined (and have their own documentation).
52 Get/set subroutine or variable attributes
56 Set/get attributes of a subroutine (deprecated)
60 Postpone load of modules until a function is used
64 Establish IS-A relationship with base class at compile time
68 Transparent BigInteger support for Perl
72 Transparent BigNumber support for Perl
76 Transparent BigNumber/BigRationale support for Perl
80 Use MakeMaker's uninstalled version of a package
84 Force byte semantics rather than character semantics
88 Define character names for C<\N{named}> string literal escapes
96 Perl compiler pragma to force verbose warning diagnostics
100 Allows you to write your script in non-ascii or non-utf8
104 Compile-time class fields
108 Control the filetest permission operators
112 C<use> a Perl module if a condition holds
116 Use integer arithmetic instead of floating point
120 Request less of something from the compiler
124 Manipulate @INC at compile time
128 Use and avoid POSIX locales for built-in operations
132 Set default PerlIO layers for input and output
136 Restrict unsafe operations when compiling
140 Package for overloading perl operations
144 Alter regular expression behaviour
148 Enable simple signal handling
152 Control sort() behaviour
156 Restrict unsafe constructs
164 Perl extension allowing use of interpreter based threads from perl
166 =item threads::shared
168 Perl extension for sharing data structures between threads
172 Enable/disable UTF-8 (or UTF-EBCDIC) in source code
176 Predeclare global variable names (obsolete)
180 Control VMS-specific language features
184 Control optional warnings
186 =item warnings::register
188 Warnings import function
192 =head2 Standard Modules
194 Standard, bundled modules are all expected to behave in a well-defined
195 manner with respect to namespace pollution because they use the
196 Exporter module. See their own documentation for details.
198 It's possible that not all modules listed below are installed on your
199 system. For example, the GDBM_File module will not be installed if you
200 don't have the gdbm library.
206 Provide framework for multiple DBMs
208 =item Attribute::Handlers
210 Simpler definition of attribute handlers
214 Load subroutines only on demand
218 Split a package for autoloading
226 Autogenerated data about Perl ops, used to generate bytecode
230 Assemble Perl bytecode
238 Perl compiler's bytecode backend
242 Perl compiler's C backend
246 Perl compiler's optimized C translation backend
250 Walk Perl syntax tree, printing concise info about ops
254 Walk Perl syntax tree, printing debug info about ops
258 Perl compiler backend to produce perl code
260 =item B::Disassembler
262 Disassemble Perl bytecode
270 Show lexical variables used in functions or files
274 Helper module for CC backend
278 Show what stashes are loaded
282 Walk Perl syntax tree, printing terse info about ops
286 Generates cross reference reports for Perl programs
290 Benchmark running times of Perl code
294 Load byte compiled perl code
298 Simple Common Gateway Interface Class
302 Backward compatibility module for CGI.pm
306 CGI routines for writing to the HTTPD (or other) error log
310 Interface to Netscape Cookies
314 CGI Interface for Fast CGI
318 Module to produce nicely formatted HTML code
322 Simple Interface to Server Push
326 Backward compatibility module for defunct CGI::Switch
330 Internal utilities used by CGI module
334 Query, download and build perl modules from CPAN sites
336 =item CPAN::FirstTime
338 Utility for CPAN::Config file Initialization
342 Wrapper around CPAN.pm without using any XS module
346 Warn of errors (from perspective of caller)
350 No user serviceable parts inside
354 Report the search path for a class's ISA tree
358 Declare struct-like datatypes as Perl classes
362 Access Perl configuration information
366 Get pathname of current working directory
370 Programmatic interface to the Perl debugging API (draft, subject to
374 Perl5 access to Berkeley DB version 1.x
378 Stringified perl data structures, suitable for both printing and C<eval>
386 A data debugging tool for the XS programmer
388 =item Devel::SelfStubber
390 Generate stubs for a SelfLoading module
394 Modules that calculate message digests
398 Perl interface to the MD5 Algorithm
402 Supply object methods for directory handles
406 Provides screen dump of Perl data.
410 Dynamically load C libraries into Perl code
418 Alias definitions to encodings
422 Single Byte Encodings
424 =item Encode::CJKConstants
426 Internally used by Encode::??::ISO_2022_*
430 China-based Chinese Encodings
434 Internally used by Encode::CN
438 Internally used by Encode
444 =item Encode::Encoder
446 Object Oriented Encoder
448 =item Encode::Encoding
450 Encode Implementation Base Class
454 Guesses encoding from data
460 =item Encode::JP::H2Z
462 Internally used by Encode::JP::2022_JP*
464 =item Encode::JP::JIS7
466 Internally used by Encode::JP
472 =item Encode::KR::2022_KR
474 Internally used by Encode::KR
476 =item Encode::MIME::Header
478 MIME 'B' and 'Q' header encoding
482 A detailed document on Encode and PerlIO
484 =item Encode::Supported
486 Encodings supported by Encode
494 Taiwan-based Chinese Encodings
496 =item Encode::Unicode
498 Various Unicode Transformation Formats
502 Use nice English (or awk) names for ugly punctuation variables
506 Perl module that imports environment variables as scalars or arrays
510 System errno constants
514 Implements default import method for modules
516 =item Exporter::Heavy
520 =item ExtUtils::Command
522 Utilities to replace common UNIX commands in Makefiles etc.
524 =item ExtUtils::Command::MM
526 Commands for the MM's to use in Makefiles
528 =item ExtUtils::Constant
530 Generate XS code to import C header constants
532 =item ExtUtils::Embed
534 Utilities for embedding Perl in C/C++ applications
536 =item ExtUtils::Install
538 Install files from here to there
540 =item ExtUtils::Installed
542 Inventory management of installed modules
544 =item ExtUtils::Liblist
546 Determine libraries to use and how to use them
550 OS adjusted ExtUtils::MakeMaker subclass
552 =item ExtUtils::MM_Any
554 Platform agnostic MM methods
556 =item ExtUtils::MM_BeOS
558 Methods to override UN*X behaviour in ExtUtils::MakeMaker
560 =item ExtUtils::MM_Cygwin
562 Methods to override UN*X behaviour in ExtUtils::MakeMaker
564 =item ExtUtils::MM_DOS
566 DOS specific subclass of ExtUtils::MM_Unix
568 =item ExtUtils::MM_MacOS
570 Methods to override UN*X behaviour in ExtUtils::MakeMaker
572 =item ExtUtils::MM_NW5
574 Methods to override UN*X behaviour in ExtUtils::MakeMaker
576 =item ExtUtils::MM_OS2
578 Methods to override UN*X behaviour in ExtUtils::MakeMaker
580 =item ExtUtils::MM_UWIN
582 U/WIN specific subclass of ExtUtils::MM_Unix
584 =item ExtUtils::MM_Unix
586 Methods used by ExtUtils::MakeMaker
588 =item ExtUtils::MM_VMS
590 Methods to override UN*X behaviour in ExtUtils::MakeMaker
592 =item ExtUtils::MM_Win32
594 Methods to override UN*X behaviour in ExtUtils::MakeMaker
596 =item ExtUtils::MM_Win95
598 Method to customize MakeMaker for Win9X
602 ExtUtils::MakeMaker subclass for customization
604 =item ExtUtils::MakeMaker
606 Create an extension Makefile
608 =item ExtUtils::Manifest
610 Utilities to write and check a MANIFEST file
612 =item ExtUtils::Mkbootstrap
614 Make a bootstrap file for use by DynaLoader
616 =item ExtUtils::Mksymlists
618 Write linker options files for dynamic extension
620 =item ExtUtils::Packlist
622 Manage .packlist files
624 =item ExtUtils::testlib
626 Add blib/* directories to @INC
630 Replace functions with equivalents which succeed or die
634 Load the C Fcntl.h defines
638 Split a pathname into pieces
640 =item File::CheckTree
642 Run many filetest checks on a tree
646 Compare files or filehandles
650 Copy files or filehandles
654 DOS like globbing and then some
658 Traverse a directory tree.
662 Perl extension for BSD glob routine
666 Create or remove directory trees
670 Portably perform operations on file names
672 =item File::Spec::Cygwin
674 Methods for Cygwin file specs
676 =item File::Spec::Epoc
678 Methods for Epoc file specs
680 =item File::Spec::Functions
682 Portably perform operations on file names
684 =item File::Spec::Mac
686 File::Spec for Mac OS (Classic)
688 =item File::Spec::OS2
690 Methods for OS/2 file specs
692 =item File::Spec::Unix
694 File::Spec for Unix, base for other File::Spec modules
696 =item File::Spec::VMS
698 Methods for VMS file specs
700 =item File::Spec::Win32
702 Methods for Win32 file specs
706 Return name and handle of a temporary file safely
710 By-name interface to Perl's built-in stat() functions
714 Keep more files open than the system permits
718 Supply object methods for filehandles
722 Simplified source filtering
724 =item Filter::Util::Call
726 Perl Source Filter Utility Module
730 Locate directory of original perl script
734 Perl5 access to the gdbm library.
738 Extended processing of command line options
742 Process single-character switches with switch clustering
746 A selection of general-utility hash subroutines
750 Compare 8-bit scalar data according to the current locale
754 Functions for dealing with RFC3066-style language tags
756 =item I18N::LangTags::List
758 Tags and names for human languages
762 Query locale information
766 Load various IO modules
770 Supply object methods for directory handles
774 Supply object methods for filehandles
778 Supply object methods for I/O handles
782 Supply object methods for pipes
786 Object interface to system poll call
790 Supply seek based methods for I/O objects
794 OO interface to the select system call
798 Object interface to socket communications
800 =item IO::Socket::INET
802 Object interface for AF_INET domain sockets
804 =item IO::Socket::UNIX
806 Object interface for AF_UNIX domain sockets
810 Open a process for both reading and writing
814 Open a process for reading, writing, and error handling
822 SysV Msg IPC object class
824 =item IPC::SysV::Semaphore
826 SysV Semaphore IPC object class
830 A selection of general-utility list subroutines
832 =item Locale::Constants
834 Constants for Locale codes
836 =item Locale::Country
838 ISO codes for country identification (ISO 3166)
840 =item Locale::Currency
842 ISO three letter codes for currency identification (ISO 4217)
844 =item Locale::Language
846 ISO two letter codes for language identification (ISO 639)
848 =item Locale::Maketext
850 Framework for localization
852 =item Locale::Maketext::TPJ13
854 Article about software localization
858 ISO codes for script identification (ISO 15924)
862 Encoding and decoding of base64 strings
864 =item MIME::Base64::QuotedPrint
866 Encoding and decoding of quoted-printable strings
870 Arbitrary size floating point math package
874 Arbitrary size integer math package
876 =item Math::BigInt::Calc
878 Pure Perl module to support Math::BigInt
880 =item Math::BigInt::Scalar
882 Pure Perl module to test Math::BigInt with scalars
886 Arbitrarily big rationales
890 Complex numbers and associated mathematical functions
894 Trigonometric functions
898 Make functions faster by trading space for time
900 =item Memoize::AnyDBM_File
902 Glue to provide EXISTS for AnyDBM_File for Storable use
904 =item Memoize::Expire
906 Plug-in module for automatic expiration of memoized values
908 =item Memoize::ExpireFile
910 Test for Memoize expiration semantics
912 =item Memoize::ExpireTest
914 Test for Memoize expiration semantics
916 =item Memoize::NDBM_File
918 Glue to provide EXISTS for NDBM_File for Storable use
920 =item Memoize::SDBM_File
922 Glue to provide EXISTS for SDBM_File for Storable use
924 =item Memoize::Storable
926 Store Memoized data in Storable database
930 Tied access to ndbm files
934 Provide a pseudo-class NEXT that allows method redispatch
938 Network Command class (as used by FTP, SMTP etc)
942 Local configuration data for libnet
946 Attempt to evaluate the current host's internet name and domain
958 OO interface to users netrc file
962 Post Office Protocol 3 Client class (RFC1939)
966 Check a remote host for reachability
970 Simple Mail Transfer Protocol Client
974 Time and daytime network client interface
978 By-name interface to Perl's built-in gethost*() functions
982 Libnet Frequently Asked Questions
986 By-name interface to Perl's built-in getnet*() functions
990 By-name interface to Perl's built-in getproto*() functions
994 By-name interface to Perl's built-in getserv*() functions
998 Generic interface to Perl Compiler backends
1002 Tied access to odbm files
1006 Disable named opcodes when compiling perl code
1010 Perl interface to IEEE Std 1003.1
1014 On demand loader for PerlIO layers and root of PerlIO::* name space
1016 =item PerlIO::encoding
1020 =item PerlIO::scalar
1022 Support module for in-memory IO.
1026 Helper class for PerlIO layers implemented in perl
1028 =item PerlIO::via::QuotedPrint
1030 PerlIO layer for quoted-printable strings
1034 Check pod documents for syntax errors
1038 Find POD documents in directory trees
1040 =item Pod::Functions
1042 Group Perl's functions a la perlfunc.pod
1046 Module to convert pod files to HTML
1048 =item Pod::InputObjects
1050 Objects representing POD input paragraphs, commands, etc.
1054 Convert Pod data to formatted Latex
1058 Convert POD data to formatted *roff input
1060 =item Pod::ParseLink
1062 Parse an LE<lt>E<gt> formatting code in POD text
1064 =item Pod::ParseUtils
1066 Helpers for POD parsing and conversion
1070 Base class for creating POD filters and translators
1074 Perl extension for converting Pod to old style Pod.
1078 Extract selected sections of POD from input
1082 Convert POD data to formatted ASCII text
1084 =item Pod::Text::Color
1086 Convert POD data to formatted color ASCII text
1088 =item Pod::Text::Overstrike
1090 Convert POD data to formatted overstrike text
1092 =item Pod::Text::Termcap
1094 Convert POD data to ASCII text with format escapes
1098 Print a usage message from embedded pod documentation
1102 Tied access to sdbm files
1106 Compile and execute code in restricted compartments
1110 A selection of general-utility scalar subroutines
1114 Search for key in dictionary file
1118 Save and restore selected file handle
1122 Load functions only on demand
1126 Run shell commands transparently within perl
1130 Load the C socket.h defines and structure manipulators
1134 Persistence for Perl data structures
1138 A switch statement for Perl
1142 Manipulate Perl symbols and their names
1146 Try every conceivable way to get hostname
1150 Perl interface to the UNIX syslog(3) calls
1152 =item Term::ANSIColor
1154 Color screen output using ANSI escape sequences
1158 Perl termcap interface
1160 =item Term::Complete
1162 Perl word completion module
1164 =item Term::ReadLine
1166 Perl interface to various C<readline> packages.
1170 Provides a simple framework for writing test scripts
1174 Backend for building test libraries
1178 Run perl standard test scripts with statistics
1180 =item Test::Harness::Assert
1184 =item Test::Harness::Iterator
1186 Internal Test::Harness Iterator
1188 =item Test::Harness::Straps
1190 Detailed analysis of test results
1194 Yet another framework for writing test scripts
1198 Basic utilities for writing tests.
1200 =item Test::Tutorial
1202 A tutorial about writing really basic tests
1206 Create an abbreviation table from a list
1208 =item Text::Balanced
1210 Extract delimited text sequences from strings.
1212 =item Text::ParseWords
1214 Parse text into an array of tokens or array of arrays
1218 Implementation of the Soundex Algorithm as Described by Knuth
1222 Expand and unexpand tabs per the unix expand(1) and unexpand(1)
1226 Line wrapping to form simple paragraphs
1230 Manipulate threads in Perl (for old code only)
1236 =item Thread::Semaphore
1238 Thread-safe semaphores
1240 =item Thread::Signal
1242 Start a thread which runs signal handlers reliably (for old code)
1244 =item Thread::Specific
1246 Thread-specific keys
1250 Base class for tied arrays
1254 Access the lines of a disk file via a Perl array
1258 Base class definitions for tied handles
1262 Base class definitions for tied hashes
1266 Add data to hash when needed
1270 Use references as hash keys
1274 Base class definitions for tied scalars
1276 =item Tie::SubstrHash
1278 Fixed-table-size, fixed-key-length hashing
1282 High resolution alarm, sleep, gettimeofday, interval timers
1286 Efficiently compute time from local and GMT time
1290 By-name interface to Perl's built-in gmtime() function
1292 =item Time::localtime
1294 By-name interface to Perl's built-in localtime() function
1298 Internal object used by Time::gmtime and Time::localtime
1302 Base class for ALL classes (blessed references)
1304 =item Unicode::Collate
1306 Unicode Collation Algorithm
1308 =item Unicode::Normalize
1310 Unicode Normalization Forms
1314 Unicode character database
1318 By-name interface to Perl's built-in getgr*() functions
1322 By-name interface to Perl's built-in getpw*() functions
1326 Interfaces to some Win32 API Functions
1334 Module to test the XS typemaps distributed with perl
1338 Dynamically load C libraries into Perl code
1342 To find out I<all> modules installed on your system, including
1343 those without documentation or outside the standard release,
1346 % find `perl -e 'print "@INC"'` -name '*.pm' -print
1348 They should all have their own documentation installed and accessible
1349 via your system man(1) command. If you do not have a B<find>
1350 program, you can use the Perl B<find2perl> program instead, which
1351 generates Perl code as output you can run through perl. If you
1352 have a B<man> program but it doesn't find your modules, you'll have
1353 to fix your manpath. See L<perl> for details. If you have no
1354 system B<man> command, you might try the B<perldoc> program.
1356 =head2 Extension Modules
1358 Extension modules are written in C (or a mix of Perl and C). They
1359 are usually dynamically loaded into Perl if and when you need them,
1360 but may also be linked in statically. Supported extension modules
1361 include Socket, Fcntl, and POSIX.
1363 Many popular C extension modules do not come bundled (at least, not
1364 completely) due to their sizes, volatility, or simply lack of time
1365 for adequate testing and configuration across the multitude of
1366 platforms on which Perl was beta-tested. You are encouraged to
1367 look for them on CPAN (described below), or using web search engines
1368 like Alta Vista or Google.
1372 CPAN stands for Comprehensive Perl Archive Network; it's a globally
1373 replicated trove of Perl materials, including documentation, style
1374 guides, tricks and traps, alternate ports to non-Unix systems and
1375 occasional binary distributions for these. Search engines for
1376 CPAN can be found at http://www.cpan.org/
1378 Most importantly, CPAN includes around a thousand unbundled modules,
1379 some of which require a C compiler to build. Major categories of
1386 Language Extensions and Documentation Tools
1394 Operating System Interfaces
1398 Networking, Device Control (modems) and InterProcess Communication
1402 Data Types and Data Type Utilities
1414 Interfaces to / Emulations of Other Programming Languages
1418 File Names, File Systems and File Locking (see also File Handles)
1422 String Processing, Language Text Processing, Parsing, and Searching
1426 Option, Argument, Parameter, and Configuration File Processing
1430 Internationalization and Locale
1434 Authentication, Security, and Encryption
1438 World Wide Web, HTML, HTTP, CGI, MIME
1442 Server and Daemon Utilities
1446 Archiving and Compression
1450 Images, Pixmap and Bitmap Manipulation, Drawing, and Graphing
1454 Mail and Usenet News
1458 Control Flow Utilities (callbacks and exceptions etc)
1462 File Handle and Input/Output Stream Utilities
1466 Miscellaneous Modules
1470 The list of the registered CPAN sites as of this writing follows.
1471 Please note that the sorting order is alphabetical on fields:
1477 |-->[state/province]
1483 and thus the North American servers happen to be listed between the
1484 European and the South American sites.
1486 You should try to choose one close to you.
1494 ftp://ftp.is.co.za/programming/perl/CPAN/
1495 ftp://ftp.mweb.co.za/pub/mirrors/cpan/
1496 ftp://ftp.saix.net/pub/CPAN/
1497 ftp://ftp.sun.ac.za/CPAN/CPAN/
1507 ftp://freesoft.cei.gov.cn/pub/languages/perl/CPAN/
1508 http://www2.linuxforum.net/mirror/CPAN/
1509 http://cpan.shellhung.org/
1510 ftp://ftp.shellhung.org/pub/CPAN
1514 http://cpan.in.freeos.com
1515 ftp://cpan.in.freeos.com/pub/CPAN/
1519 http://cpan.itb.web.id/
1520 ftp://mirrors.piksi.itb.ac.id/CPAN/
1521 http://cpan.cbn.net.id/
1522 ftp://ftp.cbn.net.id/mirror/CPAN
1523 http://CPAN.mweb.co.id/
1524 ftp://ftp.mweb.co.id/pub/languages/perl/CPAN/
1528 http://www.iglu.org.il:/pub/CPAN/
1529 ftp://ftp.iglu.org.il/pub/CPAN/
1530 http://cpan.lerner.co.il/
1531 http://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/
1532 ftp://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/
1536 ftp://ftp.u-aizu.ac.jp/pub/CPAN
1537 ftp://ftp.kddlabs.co.jp/CPAN/
1538 http://mirror.nucba.ac.jp/mirror/Perl/
1539 ftp://mirror.nucba.ac.jp/mirror/Perl/
1540 ftp://ftp.meisei-u.ac.jp/pub/CPAN/
1541 ftp://ftp.ayamura.org/pub/CPAN/
1542 ftp://ftp.jaist.ac.jp/pub/lang/perl/CPAN/
1543 ftp://ftp.dti.ad.jp/pub/lang/CPAN/
1544 ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/
1548 http://mirror.Mazic.org/pub/CPAN
1549 ftp://mirror.Mazic.org/pub/CPAN
1553 http://www.adzu.edu.ph/CPAN
1555 =item Russian Federation
1557 http://cpan.tomsk.ru
1558 ftp://cpan.tomsk.ru/pub/CPAN
1562 ftp://ftp.isu.net.sa/pub/CPAN/
1566 http://cpan.hjc.edu.sg
1567 http://mirror.averse.net/pub/CPAN
1568 ftp://mirror.averse.net/pub/CPAN
1572 http://CPAN.bora.net/
1573 ftp://ftp.bora.net/pub/CPAN/
1574 http://ftp.kornet.net/pub/CPAN/
1575 ftp://ftp.kornet.net/pub/CPAN/
1576 ftp://ftp.nuri.net/pub/CPAN/
1577 http://ftp.xgate.co.kr/cpan/
1578 ftp://ftp.xgate.co.kr/pub/mirror/CPAN
1582 ftp://ftp.nctu.edu.tw/UNIX/perl/CPAN
1583 ftp://ftp.ee.ncku.edu.tw/pub/perl/CPAN/
1584 ftp://ftp1.sinica.edu.tw/pub1/perl/CPAN/
1585 http://ftp.tku.edu.tw/pub/CPAN/
1586 ftp://ftp.tku.edu.tw/pub/CPAN/
1590 ftp://ftp.loxinfo.co.th/pub/cpan/
1591 ftp://ftp.cs.riubon.ac.th/pub/mirrors/CPAN/
1595 =head2 Central America
1601 ftp://ftp.linux.co.cr/mirrors/CPAN/
1602 http://ftp.ucr.ac.cr/Unix/CPAN/
1603 ftp://ftp.ucr.ac.cr/pub/Unix/CPAN/
1613 ftp://ftp.tuwien.ac.at/pub/CPAN/
1617 http://ftp.easynet.be/pub/CPAN/
1618 ftp://ftp.easynet.be/pub/CPAN/
1619 http://cpan.skynet.be
1620 ftp://ftp.skynet.be/pub/CPAN
1621 ftp://ftp.kulnet.kuleuven.ac.be/pub/mirror/CPAN/
1625 http://cpan.lirex.net/
1626 ftp://ftp.lirex.net/pub/mirrors/CPAN
1630 http://ftp.linux.hr/pub/CPAN/
1631 ftp://ftp.linux.hr/pub/CPAN/
1633 =item Czech Republic
1635 http://ftp.fi.muni.cz/pub/CPAN/
1636 ftp://ftp.fi.muni.cz/pub/CPAN/
1637 ftp://sunsite.mff.cuni.cz/MIRRORS/ftp.funet.fi/pub/languages/perl/CPAN/
1641 http://mirrors.sunsite.dk/cpan/
1642 ftp://sunsite.dk/mirrors/cpan/
1643 http://cpan.cybercity.dk
1644 http://www.cpan.dk/CPAN/
1645 ftp://www.cpan.dk/ftp.cpan.org/CPAN/
1649 ftp://ftp.ut.ee/pub/languages/perl/CPAN/
1653 ftp://ftp.funet.fi/pub/languages/perl/CPAN/
1654 http://cpan.kpnqwest.fi/
1658 http://ftp.u-paris10.fr/perl/CPAN
1659 ftp://ftp.u-paris10.fr/perl/CPAN
1660 http://cpan.mirrors.easynet.fr/
1661 ftp://cpan.mirrors.easynet.fr/pub/ftp.cpan.org/
1662 ftp://ftp.club-internet.fr/pub/perl/CPAN/
1664 ftp://ftp.lip6.fr/pub/perl/CPAN/
1665 ftp://ftp.oleane.net/pub/mirrors/CPAN/
1666 ftp://ftp.pasteur.fr/pub/computing/CPAN/
1667 http://mir2.ovh.net/ftp.cpan.org
1668 ftp://mir1.ovh.net/ftp.cpan.org
1669 http://ftp.u-strasbg.fr/CPAN
1670 ftp://ftp.u-strasbg.fr/CPAN
1671 http://cpan.cict.fr/
1672 ftp://cpan.cict.fr/pub/CPAN/
1673 ftp://ftp.uvsq.fr/pub/perl/CPAN/
1677 ftp://ftp.rz.ruhr-uni-bochum.de/pub/CPAN/
1678 ftp://ftp.freenet.de/pub/ftp.cpan.org/pub/CPAN/
1679 ftp://ftp.uni-erlangen.de/pub/source/CPAN/
1680 ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/CPAN
1681 http://pandemonium.tiscali.de/pub/CPAN/
1682 ftp://pandemonium.tiscali.de/pub/CPAN/
1683 http://ftp.gwdg.de/pub/languages/perl/CPAN/
1684 ftp://ftp.gwdg.de/pub/languages/perl/CPAN/
1685 ftp://ftp.uni-hamburg.de/pub/soft/lang/perl/CPAN/
1686 ftp://ftp.leo.org/pub/CPAN/
1687 http://cpan.noris.de/
1688 ftp://cpan.noris.de/pub/CPAN/
1689 ftp://ftp.mpi-sb.mpg.de/pub/perl/CPAN/
1690 ftp://ftp.gmd.de/mirrors/CPAN/
1694 ftp://ftp.acn.gr/pub/lang/perl/CPAN
1695 ftp://ftp.forthnet.gr/pub/languages/perl/CPAN
1696 ftp://ftp.ntua.gr/pub/lang/perl/
1700 http://cpan.artifact.hu/
1701 ftp://cpan.artifact.hu/CPAN/
1702 http://ftp.kfki.hu/packages/perl/CPAN/
1703 ftp://ftp.kfki.hu/pub/packages/perl/CPAN/
1707 http://ftp.rhnet.is/pub/CPAN/
1708 ftp://ftp.rhnet.is/pub/CPAN/
1712 http://cpan.indigo.ie/
1713 ftp://cpan.indigo.ie/pub/CPAN/
1714 http://sunsite.compapp.dcu.ie/pub/perl/
1715 ftp://sunsite.compapp.dcu.ie/pub/perl/
1719 http://cpan.nettuno.it/
1720 http://gusp.dyndns.org/CPAN/
1721 ftp://gusp.dyndns.org/pub/CPAN
1722 http://softcity.iol.it/cpan
1723 ftp://softcity.iol.it/pub/cpan
1724 ftp://ftp.unina.it/pub/Other/CPAN/CPAN/
1725 ftp://ftp.unipi.it/pub/mirror/perl/CPAN/
1726 ftp://cis.uniRoma2.it/CPAN/
1727 ftp://ftp.edisontel.it/pub/CPAN_Mirror/
1728 ftp://ftp.flashnet.it/pub/CPAN/
1732 http://kvin.lv/pub/CPAN/
1736 ftp://ftp.unix.lt/pub/CPAN/
1740 ftp://download.xs4all.nl/pub/mirror/CPAN/
1741 ftp://ftp.nl.uu.net/pub/CPAN/
1742 ftp://ftp.nluug.nl/pub/languages/perl/CPAN/
1743 http://cpan.cybercomm.nl/
1744 ftp://mirror.cybercomm.nl/pub/CPAN
1745 ftp://ftp.cpan.nl/pub/CPAN/
1746 http://ftp.easynet.nl/mirror/CPAN
1747 ftp://ftp.easynet.nl/mirror/CPAN
1748 http://archive.cs.uu.nl/mirror/CPAN/
1749 ftp://ftp.cs.uu.nl/mirror/CPAN/
1753 ftp://ftp.uninett.no/pub/languages/perl/CPAN
1754 ftp://ftp.uit.no/pub/languages/perl/cpan/
1758 ftp://ftp.pk.edu.pl/pub/lang/perl/CPAN/
1759 ftp://ftp.mega.net.pl/pub/mirrors/ftp.perl.com/
1760 ftp://ftp.man.torun.pl/pub/doc/CPAN/
1761 ftp://sunsite.icm.edu.pl/pub/CPAN/
1765 ftp://ftp.ua.pt/pub/CPAN/
1766 ftp://perl.di.uminho.pt/pub/CPAN/
1767 http://cpan.dei.uc.pt/
1768 ftp://ftp.dei.uc.pt/pub/CPAN
1769 ftp://ftp.ist.utl.pt/pub/CPAN/
1771 ftp://cpan.ip.pt/pub/cpan/
1772 ftp://ftp.netc.pt/pub/CPAN/
1773 ftp://ftp.up.pt/pub/CPAN
1777 ftp://ftp.kappa.ro/pub/mirrors/ftp.perl.org/pub/CPAN/
1778 ftp://ftp.dntis.ro/pub/cpan/
1779 ftp://ftp.dnttm.ro/pub/CPAN/
1780 ftp://ftp.lasting.ro/pub/CPAN
1781 ftp://ftp.timisoara.roedu.net/mirrors/CPAN/
1785 ftp://ftp.chg.ru/pub/lang/perl/CPAN/
1786 http://cpan.rinet.ru/
1787 ftp://cpan.rinet.ru/pub/mirror/CPAN/
1788 ftp://ftp.aha.ru/pub/CPAN/
1789 http://cpan.sai.msu.ru/
1790 ftp://ftp.sai.msu.su/pub/lang/perl/CPAN/
1794 http://ftp.cvt.stuba.sk/pub/CPAN/
1795 ftp://ftp.cvt.stuba.sk/pub/CPAN/
1799 ftp://ftp.arnes.si/software/perl/CPAN/
1803 http://cpan.imasd.elmundo.es/
1804 ftp://ftp.rediris.es/mirror/CPAN/
1805 ftp://ftp.etse.urv.es/pub/perl/
1809 http://ftp.du.se/CPAN/
1810 ftp://ftp.du.se/pub/CPAN/
1811 ftp://mirror.dataphone.se/pub/CPAN
1812 ftp://ftp.sunet.se/pub/lang/perl/CPAN/
1816 ftp://ftp.danyk.ch/CPAN/
1817 ftp://sunsite.cnlab-switch.ch/mirror/CPAN/
1821 http://ftp.ulak.net.tr/perl/CPAN/
1822 ftp://ftp.ulak.net.tr/perl/CPAN
1823 ftp://sunsite.bilkent.edu.tr/pub/languages/CPAN/
1829 ftp://ftp.perl.org.ua/pub/CPAN/
1831 =item United Kingdom
1833 http://www.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN
1834 ftp://ftp.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN/
1835 http://cpan.teleglobe.net/
1836 ftp://cpan.teleglobe.net/pub/CPAN
1837 http://cpan.crazygreek.co.uk
1838 ftp://ftp.demon.co.uk/pub/CPAN/
1839 http://cpan.m.flirble.org/
1840 ftp://ftp.flirble.org/pub/languages/perl/CPAN/
1841 ftp://ftp.plig.org/pub/CPAN/
1842 http://mirror.uklinux.net/CPAN/
1843 ftp://mirror.uklinux.net/pub/CPAN/
1844 http://cpan.mirrors.clockerz.net/
1845 ftp://ftp.clockerz.net/pub/CPAN/
1846 ftp://usit.shef.ac.uk/pub/packages/CPAN/
1850 =head2 North America
1856 http://sunsite.ualberta.ca/pub/Mirror/CPAN/
1857 ftp://sunsite.ualberta.ca/pub/Mirror/CPAN/
1861 http://theoryx5.uwinnipeg.ca/pub/CPAN/
1862 ftp://theoryx5.uwinnipeg.ca/pub/CPAN/
1866 ftp://cpan.chebucto.ns.ca/pub/CPAN/
1870 ftp://ftp.crc.ca/pub/CPAN/
1874 http://cpan.mirror.smartworker.org/
1878 http://cpan.azc.uam.mx
1879 ftp://cpan.azc.uam.mx/mirrors/CPAN
1880 http://cpan.unam.mx/
1881 ftp://cpan.unam.mx/pub/CPAN
1882 http://www.msg.com.mx/CPAN/
1883 ftp://ftp.msg.com.mx/pub/CPAN/
1887 =head2 United States
1893 http://mirror.hiwaay.net/CPAN/
1894 ftp://mirror.hiwaay.net/CPAN/
1898 http://cpan.develooper.com/
1899 http://www.cpan.org/
1900 ftp://cpan.valueclick.com/pub/CPAN/
1901 http://mirrors.gossamer-threads.com/CPAN
1902 ftp://cpan.nas.nasa.gov/pub/perl/CPAN/
1903 http://mirrors.kernel.org/cpan/
1904 ftp://mirrors.kernel.org/pub/CPAN
1905 http://cpan.digisle.net/
1906 ftp://cpan.digisle.net/pub/CPAN
1907 http://www.perl.com/CPAN/
1908 http://download.sourceforge.net/mirrors/CPAN/
1912 ftp://ftp.cs.colorado.edu/pub/perl/CPAN/
1916 http://ftp.lug.udel.edu/pub/CPAN
1917 ftp://ftp.lug.udel.edu/pub/CPAN
1919 =item District of Columbia
1921 ftp://ftp.dc.aleron.net/pub/CPAN/
1925 ftp://ftp.cise.ufl.edu/pub/mirrors/CPAN/
1926 http://mirror.csit.fsu.edu/pub/CPAN/
1927 ftp://mirror.csit.fsu.edu/pub/CPAN/
1928 http://cpan.mirrors.nks.net/
1932 http://uiarchive.uiuc.edu/mirrors/ftp/cpan.cse.msu.edu/
1933 ftp://uiarchive.uiuc.edu/mirrors/ftp/cpan.cse.msu.edu/
1937 ftp://ftp.uwsg.iu.edu/pub/perl/CPAN/
1938 http://cpan.netnitco.net/
1939 ftp://cpan.netnitco.net/pub/mirrors/CPAN/
1940 http://archive.progeny.com/CPAN/
1941 ftp://archive.progeny.com/CPAN/
1942 ftp://cpan.in-span.net/
1943 http://csociety-ftp.ecn.purdue.edu/pub/CPAN
1944 ftp://csociety-ftp.ecn.purdue.edu/pub/CPAN
1948 http://cpan.uky.edu/
1949 ftp://cpan.uky.edu/pub/CPAN/
1953 ftp://ftp.ccs.neu.edu/net/mirrors/ftp.funet.fi/pub/languages/perl/CPAN/
1954 http://cpan.mirrors.netnumina.com/
1955 ftp://mirrors.netnumina.com/cpan/
1959 ftp://cpan.cse.msu.edu/
1963 ftp://ftp.cpanel.net/pub/CPAN/
1964 http://cpan.teleglobe.net/
1965 ftp://cpan.teleglobe.net/pub/CPAN
1969 ftp://ftp.exobit.org/pub/perl/CPAN
1970 http://cpan.belfry.net/
1971 http://cpan.thepirtgroup.com/
1972 ftp://cpan.thepirtgroup.com/
1973 ftp://ftp.stealth.net/pub/CPAN/
1974 http://www.rge.com/pub/languages/perl/
1975 ftp://ftp.rge.com/pub/languages/perl/
1976 ftp://mirrors.cloud9.net/pub/mirrors/CPAN/
1978 =item North Carolina
1980 ftp://ftp.duke.edu/pub/perl/
1984 ftp://ftp.loaded.net/pub/CPAN/
1988 ftp://ftp.ou.edu/mirrors/CPAN/
1992 ftp://ftp.orst.edu/pub/CPAN
1996 http://ftp.epix.net/CPAN/
1997 ftp://ftp.epix.net/pub/languages/perl/
1998 http://mirrors.phenominet.com/pub/CPAN/
1999 ftp://mirrors.phenominet.com/pub/CPAN/
2000 http://cpan.pair.com/
2001 ftp://cpan.pair.com/pub/CPAN/
2002 ftp://carroll.cac.psu.edu/pub/CPAN/
2006 ftp://ftp.sunsite.utk.edu/pub/CPAN/
2010 http://ftp.sedl.org/pub/mirrors/CPAN/
2011 ftp://mirror.telentente.com/pub/CPAN
2015 ftp://mirror.xmission.com/CPAN/
2019 http://mirrors.rcn.net/pub/lang/CPAN/
2020 ftp://mirrors.rcn.net/pub/lang/CPAN/
2021 http://perl.secsup.org/
2022 ftp://perl.secsup.org/pub/perl/
2023 http://mirrors.phihost.com/CPAN/
2024 ftp://mirrors.phihost.com/CPAN/
2025 ftp://ruff.cs.jmu.edu/pub/CPAN/
2026 http://perl.Liquidation.com/CPAN/
2030 http://cpan.llarian.net/
2031 ftp://cpan.llarian.net/pub/CPAN/
2032 http://cpan.mirrorcentral.com/
2033 ftp://ftp.mirrorcentral.com/pub/CPAN/
2034 ftp://ftp-mirror.internap.com/pub/CPAN/
2038 http://mirror.sit.wisc.edu/pub/CPAN/
2039 ftp://mirror.sit.wisc.edu/pub/CPAN/
2049 http://ftp.planetmirror.com/pub/CPAN/
2050 ftp://ftp.planetmirror.com/pub/CPAN/
2051 ftp://mirror.aarnet.edu.au/pub/perl/CPAN/
2052 ftp://cpan.topend.com.au/pub/CPAN/
2056 ftp://ftp.auckland.ac.nz/pub/perl/CPAN/
2057 http://cpan.soa.co.nz/CPAN/
2061 =head2 South America
2067 ftp://mirrors.bannerlandia.com.ar/mirrors/CPAN/
2068 http://ftp.fcaglp.unlp.edu.ar/pub/CPAN/
2069 ftp://ftp.fcaglp.unlp.edu.ar/pub/CPAN/
2073 ftp://cpan.pop-mg.com.br/pub/CPAN/
2074 ftp://ftp.matrix.com.br/pub/perl/CPAN/
2078 http://cpan.netglobalis.net/
2079 ftp://cpan.netglobalis.net/pub/CPAN/
2083 =head2 RSYNC Mirrors
2085 ftp.fcaglp.unlp.edu.ar::CPAN
2086 cpan.mirror.smartworker.org::CPAN
2087 theoryx5.uwinnipeg.ca::CPAN
2088 ftp.shellhung.org::CPAN
2090 ftp.u-paris10.fr::CPAN
2092 ftp.gwdg.de::FTP/languages/perl/CPAN/
2094 CPAN.piksi.itb.ac.id::CPAN
2095 ftp.cbn.net.id::CPAN
2096 ftp.iglu.org.il::CPAN
2097 gusp.dyndns.org::cpan
2098 ftp.kddlabs.co.jp::cpan
2099 ftp.ayamura.org::pub/CPAN/
2100 mirror.averse.net::cpan
2101 cpan.teleglobe.net::CPAN
2103 archive.progeny.com::CPAN
2104 cpan.teleglobe.net::CPAN
2105 ftp.lug.udel.edu::cpan
2106 mirrors.kernel.org::mirrors/CPAN
2107 mirrors.phenominet.com::CPAN
2108 mirror.csit.fsu.edu::CPAN
2109 csociety-ftp.ecn.purdue.edu::CPAN
2111 For an up-to-date listing of CPAN sites,
2112 see http://www.cpan.org/SITES or ftp://www.cpan.org/SITES .
2114 =head1 Modules: Creation, Use, and Abuse
2116 (The following section is borrowed directly from Tim Bunce's modules
2117 file, available at your nearest CPAN site.)
2119 Perl implements a class using a package, but the presence of a
2120 package doesn't imply the presence of a class. A package is just a
2121 namespace. A class is a package that provides subroutines that can be
2122 used as methods. A method is just a subroutine that expects, as its
2123 first argument, either the name of a package (for "static" methods),
2124 or a reference to something (for "virtual" methods).
2126 A module is a file that (by convention) provides a class of the same
2127 name (sans the .pm), plus an import method in that class that can be
2128 called to fetch exported symbols. This module may implement some of
2129 its methods by loading dynamic C or C++ objects, but that should be
2130 totally transparent to the user of the module. Likewise, the module
2131 might set up an AUTOLOAD function to slurp in subroutine definitions on
2132 demand, but this is also transparent. Only the F<.pm> file is required to
2133 exist. See L<perlsub>, L<perltoot>, and L<AutoLoader> for details about
2134 the AUTOLOAD mechanism.
2136 =head2 Guidelines for Module Creation
2142 Do similar modules already exist in some form?
2144 If so, please try to reuse the existing modules either in whole or
2145 by inheriting useful features into a new class. If this is not
2146 practical try to get together with the module authors to work on
2147 extending or enhancing the functionality of the existing modules.
2148 A perfect example is the plethora of packages in perl4 for dealing
2149 with command line options.
2151 If you are writing a module to expand an already existing set of
2152 modules, please coordinate with the author of the package. It
2153 helps if you follow the same naming scheme and module interaction
2154 scheme as the original author.
2158 Try to design the new module to be easy to extend and reuse.
2160 Try to C<use warnings;> (or C<use warnings qw(...);>).
2161 Remember that you can add C<no warnings qw(...);> to individual blocks
2162 of code that need less warnings.
2164 Use blessed references. Use the two argument form of bless to bless
2165 into the class name given as the first parameter of the constructor,
2170 return bless {}, $class;
2173 or even this if you'd like it to be used as either a static
2174 or a virtual method.
2178 my $class = ref($self) || $self;
2179 return bless {}, $class;
2182 Pass arrays as references so more parameters can be added later
2183 (it's also faster). Convert functions into methods where
2184 appropriate. Split large methods into smaller more flexible ones.
2185 Inherit methods from other modules if appropriate.
2187 Avoid class name tests like: C<die "Invalid" unless ref $ref eq 'FOO'>.
2188 Generally you can delete the C<eq 'FOO'> part with no harm at all.
2189 Let the objects look after themselves! Generally, avoid hard-wired
2190 class names as far as possible.
2192 Avoid C<< $r->Class::func() >> where using C<@ISA=qw(... Class ...)> and
2193 C<< $r->func() >> would work (see L<perlbot> for more details).
2195 Use autosplit so little used or newly added functions won't be a
2196 burden to programs that don't use them. Add test functions to
2197 the module after __END__ either using AutoSplit or by saying:
2199 eval join('',<main::DATA>) || die $@ unless caller();
2201 Does your module pass the 'empty subclass' test? If you say
2202 C<@SUBCLASS::ISA = qw(YOURCLASS);> your applications should be able
2203 to use SUBCLASS in exactly the same way as YOURCLASS. For example,
2204 does your application still work if you change: C<$obj = new YOURCLASS;>
2205 into: C<$obj = new SUBCLASS;> ?
2207 Avoid keeping any state information in your packages. It makes it
2208 difficult for multiple other packages to use yours. Keep state
2209 information in objects.
2213 Try to C<use strict;> (or C<use strict qw(...);>).
2214 Remember that you can add C<no strict qw(...);> to individual blocks
2215 of code that need less strictness.
2219 Follow the guidelines in the perlstyle(1) manual.
2225 Some simple style guidelines
2227 The perlstyle manual supplied with Perl has many helpful points.
2229 Coding style is a matter of personal taste. Many people evolve their
2230 style over several years as they learn what helps them write and
2231 maintain good code. Here's one set of assorted suggestions that
2232 seem to be widely used by experienced developers:
2234 Use underscores to separate words. It is generally easier to read
2235 $var_names_like_this than $VarNamesLikeThis, especially for
2236 non-native speakers of English. It's also a simple rule that works
2237 consistently with VAR_NAMES_LIKE_THIS.
2239 Package/Module names are an exception to this rule. Perl informally
2240 reserves lowercase module names for 'pragma' modules like integer
2241 and strict. Other modules normally begin with a capital letter and
2242 use mixed case with no underscores (need to be short and portable).
2244 You may find it helpful to use letter case to indicate the scope
2245 or nature of a variable. For example:
2247 $ALL_CAPS_HERE constants only (beware clashes with Perl vars)
2248 $Some_Caps_Here package-wide global/static
2249 $no_caps_here function scope my() or local() variables
2251 Function and method names seem to work best as all lowercase.
2252 e.g., C<< $obj->as_string() >>.
2254 You can use a leading underscore to indicate that a variable or
2255 function should not be used outside the package that defined it.
2259 Select what to export.
2261 Do NOT export method names!
2263 Do NOT export anything else by default without a good reason!
2265 Exports pollute the namespace of the module user. If you must
2266 export try to use @EXPORT_OK in preference to @EXPORT and avoid
2267 short or common names to reduce the risk of name clashes.
2269 Generally anything not exported is still accessible from outside the
2270 module using the ModuleName::item_name (or C<< $blessed_ref->method >>)
2271 syntax. By convention you can use a leading underscore on names to
2272 indicate informally that they are 'internal' and not for public use.
2274 (It is actually possible to get private functions by saying:
2275 C<my $subref = sub { ... }; &$subref;>. But there's no way to call that
2276 directly as a method, because a method must have a name in the symbol
2279 As a general rule, if the module is trying to be object oriented
2280 then export nothing. If it's just a collection of functions then
2281 @EXPORT_OK anything but use @EXPORT with caution.
2285 Select a name for the module.
2287 This name should be as descriptive, accurate, and complete as
2288 possible. Avoid any risk of ambiguity. Always try to use two or
2289 more whole words. Generally the name should reflect what is special
2290 about what the module does rather than how it does it. Please use
2291 nested module names to group informally or categorize a module.
2292 There should be a very good reason for a module not to have a nested name.
2293 Module names should begin with a capital letter.
2295 Having 57 modules all called Sort will not make life easy for anyone
2296 (though having 23 called Sort::Quick is only marginally better :-).
2297 Imagine someone trying to install your module alongside many others.
2298 If in any doubt ask for suggestions in comp.lang.perl.misc.
2300 If you are developing a suite of related modules/classes it's good
2301 practice to use nested classes with a common prefix as this will
2302 avoid namespace clashes. For example: Xyz::Control, Xyz::View,
2303 Xyz::Model etc. Use the modules in this list as a naming guide.
2305 If adding a new module to a set, follow the original author's
2306 standards for naming modules and the interface to methods in
2309 If developing modules for private internal or project specific use,
2310 that will never be released to the public, then you should ensure
2311 that their names will not clash with any future public module. You
2312 can do this either by using the reserved Local::* category or by
2313 using a category name that includes an underscore like Foo_Corp::*.
2315 To be portable each component of a module name should be limited to
2316 11 characters. If it might be used on MS-DOS then try to ensure each is
2317 unique in the first 8 characters. Nested modules make this easier.
2321 Have you got it right?
2323 How do you know that you've made the right decisions? Have you
2324 picked an interface design that will cause problems later? Have
2325 you picked the most appropriate name? Do you have any questions?
2327 The best way to know for sure, and pick up many helpful suggestions,
2328 is to ask someone who knows. Comp.lang.perl.misc is read by just about
2329 all the people who develop modules and it's the best place to ask.
2331 All you need to do is post a short summary of the module, its
2332 purpose and interfaces. A few lines on each of the main methods is
2333 probably enough. (If you post the whole module it might be ignored
2334 by busy people - generally the very people you want to read it!)
2336 Don't worry about posting if you can't say when the module will be
2337 ready - just say so in the message. It might be worth inviting
2338 others to help you, they may be able to complete it for you!
2342 README and other Additional Files.
2344 It's well known that software developers usually fully document the
2345 software they write. If, however, the world is in urgent need of
2346 your software and there is not enough time to write the full
2347 documentation please at least provide a README file containing:
2353 A description of the module/package/extension etc.
2357 A copyright notice - see below.
2361 Prerequisites - what else you may need to have.
2365 How to build it - possible changes to Makefile.PL etc.
2373 Recent changes in this release, especially incompatibilities
2377 Changes / enhancements you plan to make in the future.
2381 If the README file seems to be getting too large you may wish to
2382 split out some of the sections into separate files: INSTALL,
2389 Adding a Copyright Notice.
2391 How you choose to license your work is a personal decision.
2392 The general mechanism is to assert your Copyright and then make
2393 a declaration of how others may copy/use/modify your work.
2395 Perl, for example, is supplied with two types of licence: The GNU
2396 GPL and The Artistic Licence (see the files README, Copying, and
2397 Artistic). Larry has good reasons for NOT just using the GNU GPL.
2399 My personal recommendation, out of respect for Larry, Perl, and the
2400 Perl community at large is to state something simply like:
2402 Copyright (c) 1995 Your Name. All rights reserved.
2403 This program is free software; you can redistribute it and/or
2404 modify it under the same terms as Perl itself.
2406 This statement should at least appear in the README file. You may
2407 also wish to include it in a Copying file and your source files.
2408 Remember to include the other words in addition to the Copyright.
2412 Give the module a version/issue/release number.
2414 To be fully compatible with the Exporter and MakeMaker modules you
2415 should store your module's version number in a non-my package
2416 variable called $VERSION. This should be a floating point
2417 number with at least two digits after the decimal (i.e., hundredths,
2418 e.g, C<$VERSION = "0.01">). Don't use a "1.3.2" style version.
2419 See L<Exporter> for details.
2421 It may be handy to add a function or method to retrieve the number.
2422 Use the number in announcements and archive file names when
2423 releasing the module (ModuleName-1.02.tar.Z).
2424 See perldoc ExtUtils::MakeMaker.pm for details.
2428 How to release and distribute a module.
2430 It's good idea to post an announcement of the availability of your
2431 module (or the module itself if small) to the comp.lang.perl.announce
2432 Usenet newsgroup. This will at least ensure very wide once-off
2435 If possible, register the module with CPAN. You should
2436 include details of its location in your announcement.
2438 Some notes about ftp archives: Please use a long descriptive file
2439 name that includes the version number. Most incoming directories
2440 will not be readable/listable, i.e., you won't be able to see your
2441 file after uploading it. Remember to send your email notification
2442 message as soon as possible after uploading else your file may get
2443 deleted automatically. Allow time for the file to be processed
2444 and/or check the file has been processed before announcing its
2447 FTP Archives for Perl Modules:
2449 Follow the instructions and links on:
2451 http://www.cpan.org/modules/00modlist.long.html
2452 http://www.cpan.org/modules/04pause.html
2454 or upload to one of these sites:
2456 https://pause.kbx.de/pause/
2457 http://pause.perl.org/pause/
2459 and notify <modules@perl.org>.
2461 By using the WWW interface you can ask the Upload Server to mirror
2462 your modules from your ftp or WWW site into your own directory on
2465 Please remember to send me an updated entry for the Module list!
2469 Take care when changing a released module.
2471 Always strive to remain compatible with previous released versions.
2472 Otherwise try to add a mechanism to revert to the
2473 old behavior if people rely on it. Document incompatible changes.
2479 =head2 Guidelines for Converting Perl 4 Library Scripts into Modules
2485 There is no requirement to convert anything.
2487 If it ain't broke, don't fix it! Perl 4 library scripts should
2488 continue to work with no problems. You may need to make some minor
2489 changes (like escaping non-array @'s in double quoted strings) but
2490 there is no need to convert a .pl file into a Module for just that.
2494 Consider the implications.
2496 All Perl applications that make use of the script will need to
2497 be changed (slightly) if the script is converted into a module. Is
2498 it worth it unless you plan to make other changes at the same time?
2502 Make the most of the opportunity.
2504 If you are going to convert the script to a module you can use the
2505 opportunity to redesign the interface. The guidelines for module
2506 creation above include many of the issues you should consider.
2510 The pl2pm utility will get you started.
2512 This utility will read *.pl files (given as parameters) and write
2513 corresponding *.pm files. The pl2pm utilities does the following:
2519 Adds the standard Module prologue lines
2523 Converts package specifiers from ' to ::
2527 Converts die(...) to croak(...)
2531 Several other minor changes
2535 Being a mechanical process pl2pm is not bullet proof. The converted
2536 code will need careful checking, especially any package statements.
2537 Don't delete the original .pl file till the new .pm one works!
2541 =head2 Guidelines for Reusing Application Code
2547 Complete applications rarely belong in the Perl Module Library.
2551 Many applications contain some Perl code that could be reused.
2553 Help save the world! Share your code in a form that makes it easy
2558 Break-out the reusable code into one or more separate module files.
2562 Take the opportunity to reconsider and redesign the interfaces.
2566 In some cases the 'application' can then be reduced to a small
2568 fragment of code built on top of the reusable modules. In these cases
2569 the application could invoked as:
2571 % perl -e 'use Module::Name; method(@ARGV)' ...
2573 % perl -mModule::Name ... (in perl5.002 or higher)
2579 Perl does not enforce private and public parts of its modules as you may
2580 have been used to in other languages like C++, Ada, or Modula-17. Perl
2581 doesn't have an infatuation with enforced privacy. It would prefer
2582 that you stayed out of its living room because you weren't invited, not
2583 because it has a shotgun.
2585 The module and its user have a contract, part of which is common law,
2586 and part of which is "written". Part of the common law contract is
2587 that a module doesn't pollute any namespace it wasn't asked to. The
2588 written contract for the module (A.K.A. documentation) may make other
2589 provisions. But then you know when you C<use RedefineTheWorld> that
2590 you're redefining the world and willing to take the consequences.