1 # Generated by perlmodlib.PL DO NOT EDIT!
5 perlmodlib - constructing new Perl modules and finding existing ones
9 =head1 THE PERL MODULE LIBRARY
11 Many modules are included the Perl distribution. These are described
12 below, and all end in F<.pm>. You may discover compiled library
13 file (usually ending in F<.so>) or small pieces of modules to be
14 autoloaded (ending in F<.al>); these were automatically generated
15 by the installation process. You may also discover files in the
16 library directory that end in either F<.pl> or F<.ph>. These are
17 old libraries supplied so that old programs that use them still
18 run. The F<.pl> files will all eventually be converted into standard
19 modules, and the F<.ph> files made by B<h2ph> will probably end up
20 as extension modules made by B<h2xs>. (Some F<.ph> values may
21 already be available through the POSIX, Errno, or Fcntl modules.)
22 The B<pl2pm> file in the distribution may help in your conversion,
23 but it's just a mechanical process and therefore far from bulletproof.
25 =head2 Pragmatic Modules
27 They work somewhat like compiler directives (pragmata) in that they
28 tend to affect the compilation of your program, and thus will usually
29 work well only when used within a C<use>, or C<no>. Most of these
30 are lexically scoped, so an inner BLOCK may countermand them
37 which lasts until the end of that BLOCK.
39 Some pragmas are lexically scoped--typically those that affect the
40 C<$^H> hints variable. Others affect the current package instead,
41 like C<use vars> and C<use subs>, which allow you to predeclare a
42 variables or subroutines within a particular I<file> rather than
43 just a block. Such declarations are effective for the entire file
44 for which they were declared. You cannot rescind them with C<no
47 The following pragmas are defined (and have their own documentation).
53 Get/set subroutine or variable attributes
57 Set/get attributes of a subroutine (deprecated)
61 Postpone load of modules until a function is used
65 Establish IS-A relationship with base class at compile time
69 Use MakeMaker's uninstalled version of a package
73 Force byte semantics rather than character semantics
77 Define character names for C<\N{named}> string literal escape.
85 Perl compiler pragma to force verbose warning diagnostics
89 Compile-time class fields
93 Control the filetest permission operators
97 Use integer arithmetic instead of floating point
101 Request less of something from the compiler
105 Use and avoid POSIX locales for built-in operations
109 Set default disciplines for input and output
113 Restrict unsafe operations when compiling
117 Package for overloading perl operations
121 Alter regular expression behaviour
125 Enable simple signal handling
129 Restrict unsafe constructs
137 Enable/disable UTF-8 (or UTF-EBCDIC) in source code
141 Predeclare global variable names (obsolete)
145 Control optional warnings
147 =item warnings::register
149 Warnings import function
153 =head2 Standard Modules
155 Standard, bundled modules are all expected to behave in a well-defined
156 manner with respect to namespace pollution because they use the
157 Exporter module. See their own documentation for details.
163 Provide framework for multiple DBMs
165 =item Attribute::Handlers
167 Simpler definition of attribute handlers
171 Load subroutines only on demand
175 Split a package for autoloading
183 Autogenerated data about Perl ops, used to generate bytecode
187 Assemble Perl bytecode
195 Perl compiler's bytecode backend
199 Perl compiler's C backend
203 Perl compiler's optimized C translation backend
207 Walk Perl syntax tree, printing concise info about ops
211 Walk Perl syntax tree, printing debug info about ops
215 Perl compiler backend to produce perl code
217 =item B::Disassembler
219 Disassemble Perl bytecode
227 Show lexical variables used in functions or files
231 Helper module for CC backend
235 Show what stashes are loaded
239 Walk Perl syntax tree, printing terse info about ops
243 Generates cross reference reports for Perl programs
247 Benchmark running times of Perl code
251 Load byte compiled perl code
255 Simple Common Gateway Interface Class
259 Backward compatibility module for CGI.pm
263 CGI routines for writing to the HTTPD (or other) error log
267 Interface to Netscape Cookies
271 CGI Interface for Fast CGI
275 Module to produce nicely formatted HTML code
279 Simple Interface to Server Push
283 Backward compatibility module for defunct CGI::Switch
287 Internal utilities used by CGI module
291 Query, download and build perl modules from CPAN sites
293 =item CPAN::FirstTime
295 Utility for CPAN::Config file Initialization
299 Wrapper around CPAN.pm without using any XS module
303 Warn of errors (from perspective of caller)
307 No user serviceable parts inside
311 Report the search path for a class's ISA tree
315 Declare struct-like datatypes as Perl classes
319 Get pathname of current working directory
323 Programmatic interface to the Perl debugging API (draft, subject to
327 Perl5 access to Berkeley DB version 1.x
329 =item Devel::SelfStubber
331 Generate stubs for a SelfLoading module
335 Modules that calculate message digests
339 Supply object methods for directory handles
343 Provides screen dump of Perl data.
349 =item Encode::EncodeFormat
351 The format of encoding tables of the Encode extension
359 Use nice English (or awk) names for ugly punctuation variables
363 Perl module that imports environment variables as scalars or arrays
367 Implements default import method for modules
369 =item Exporter::Heavy
373 =item ExtUtils::Command
375 Utilities to replace common UNIX commands in Makefiles etc.
377 =item ExtUtils::Constant
379 Generate XS code to import C header constants
381 =item ExtUtils::Embed
383 Utilities for embedding Perl in C/C++ applications
385 =item ExtUtils::Install
387 Install files from here to there
389 =item ExtUtils::Installed
391 Inventory management of installed modules
393 =item ExtUtils::Liblist
395 Determine libraries to use and how to use them
397 =item ExtUtils::MM_Cygwin
399 Methods to override UN*X behaviour in ExtUtils::MakeMaker
401 =item ExtUtils::MM_NW5
403 Methods to override UN*X behaviour in ExtUtils::MakeMaker
405 =item ExtUtils::MM_OS2
407 Methods to override UN*X behaviour in ExtUtils::MakeMaker
409 =item ExtUtils::MM_Unix
411 Methods used by ExtUtils::MakeMaker
413 =item ExtUtils::MM_VMS
415 Methods to override UN*X behaviour in ExtUtils::MakeMaker
417 =item ExtUtils::MM_Win32
419 Methods to override UN*X behaviour in ExtUtils::MakeMaker
421 =item ExtUtils::MakeMaker
423 Create an extension Makefile
425 =item ExtUtils::Manifest
427 Utilities to write and check a MANIFEST file
429 =item ExtUtils::Mkbootstrap
431 Make a bootstrap file for use by DynaLoader
433 =item ExtUtils::Mksymlists
435 Write linker options files for dynamic extension
437 =item ExtUtils::Packlist
439 Manage .packlist files
441 =item ExtUtils::testlib
443 Add blib/* directories to @INC
447 Replace functions with equivalents which succeed or die
451 Load the C Fcntl.h defines
455 Split a pathname into pieces
457 =item File::CheckTree
459 Run many filetest checks on a tree
463 Compare files or filehandles
467 Copy files or filehandles
471 DOS like globbing and then some
479 Create or remove directory trees
483 Portably perform operations on file names
485 =item File::Spec::Epoc
487 Methods for Epoc file specs
489 =item File::Spec::Functions
491 Portably perform operations on file names
493 =item File::Spec::Mac
497 =item File::Spec::OS2
499 Methods for OS/2 file specs
501 =item File::Spec::Unix
503 Methods used by File::Spec
505 =item File::Spec::VMS
507 Methods for VMS file specs
509 =item File::Spec::Win32
511 Methods for Win32 file specs
515 Return name and handle of a temporary file safely
519 By-name interface to Perl's built-in stat() functions
523 Keep more files open than the system permits
527 Supply object methods for filehandles
531 Simplified source filtering
535 Locate directory of original perl script
539 Extended processing of command line options
543 Process single-character switches with switch clustering
547 Compare 8-bit scalar data according to the current locale
551 Functions for dealing with RFC3066-style language tags
553 =item I18N::LangTags::List
555 Tags and names for human languages
559 Load various IO modules
563 Open a process for both reading and writing
567 Open a process for reading, writing, and error handling
569 =item Locale::Constants
571 Constants for Locale codes
573 =item Locale::Country
575 ISO codes for country identification (ISO 3166)
577 =item Locale::Currency
579 ISO three letter codes for currency identification (ISO 4217)
581 =item Locale::Language
583 ISO two letter codes for language identification (ISO 639)
585 =item Locale::Maketext
587 Framework for localization
589 =item Locale::Maketext::TPJ13
591 Article about software localization
595 Arbitrary size floating point math package
599 Arbitrary size integer math package
601 =item Math::BigInt::Calc
603 Pure Perl module to support Math::BigInt
607 Complex numbers and associated mathematical functions
611 Trigonometric functions
615 Make your functions faster by trading space for time
617 =item Memoize::AnyDBM_File
619 Glue to provide EXISTS for AnyDBM_File for Storable use
621 =item Memoize::Expire
623 Plug-in module for automatic expiration of memoized values
625 =item Memoize::ExpireFile
627 Test for Memoize expiration semantics
629 =item Memoize::ExpireTest
631 Test for Memoize expiration semantics
633 =item Memoize::NDBM_File
635 Glue to provide EXISTS for NDBM_File for Storable use
637 =item Memoize::SDBM_File
639 Glue to provide EXISTS for SDBM_File for Storable use
643 Plug-in module to specify which return values should be memoized
645 =item Memoize::Storable
647 Store Memoized data in Storable database
651 Tied access to ndbm files
655 Provide a pseudo-class NEXT that allows method redispatch
659 Network Command class (as used by FTP, SMTP etc)
663 Local configuration data for libnet
667 Attempt to evaluate the current host's internet name and domain
679 OO interface to users netrc file
683 Post Office Protocol 3 Client class (RFC1081)
687 Check a remote host for reachability
691 Simple Mail Transfer Protocol Client
695 Time and daytime network client interface
699 By-name interface to Perl's built-in gethost*() functions
703 Libnet Frequently Asked Questions
707 By-name interface to Perl's built-in getnet*() functions
711 By-name interface to Perl's built-in getproto*() functions
715 By-name interface to Perl's built-in getserv*() functions
719 Generic interface to Perl Compiler backends
723 Tied access to odbm files
727 Disable named opcodes when compiling perl code
731 Perl interface to IEEE Std 1003.1
735 On demand loader for PerlIO layers and root of PerlIO::* name space
739 Check pod documents for syntax errors
743 Find POD documents in directory trees
747 Module to convert pod files to HTML
749 =item Pod::InputObjects
751 Objects representing POD input paragraphs, commands, etc.
755 Convert Pod data to formatted Latex
759 Convert POD data to formatted *roff input
761 =item Pod::ParseUtils
763 Helpers for POD parsing and conversion
767 Base class for creating POD filters and translators
771 Perl extension for converting Pod to old style Pod.
775 Extract selected sections of POD from input
779 Convert POD data to formatted ASCII text
781 =item Pod::Text::Color
783 Convert POD data to formatted color ASCII text
785 =item Pod::Text::Overstrike
787 Convert POD data to formatted overstrike text
789 =item Pod::Text::Termcap
791 Convert POD data to ASCII text with format escapes
795 Print a usage message from embedded pod documentation
799 Tied access to sdbm files
803 Compile and execute code in restricted compartments
807 Search for key in dictionary file
811 Save and restore selected file handle
815 Load functions only on demand
819 Run shell commands transparently within perl
823 Load the C socket.h defines and structure manipulators
827 Persistency for perl data structures
831 A switch statement for Perl
835 Manipulate Perl symbols and their names
837 =item Term::ANSIColor
839 Color screen output using ANSI escape sequences
843 Perl termcap interface
847 Perl word completion module
851 Perl interface to various C<readline> packages. If
855 Provides a simple framework for writing test scripts
859 Run perl standard test scripts with statistics
863 Yet another framework for writing test scripts
867 Basic utilities for writing tests.
871 Create an abbreviation table from a list
875 Extract delimited text sequences from strings.
877 =item Text::ParseWords
879 Parse text into an array of tokens or array of arrays
883 Implementation of the Soundex Algorithm as Described by Knuth
887 Expand and unexpand tabs per the unix expand(1) and unexpand(1)
891 Line wrapping to form simple paragraphs
895 Manipulate threads in Perl (EXPERIMENTAL, subject to change)
901 =item Thread::Semaphore
903 Thread-safe semaphores
907 Start a thread which runs signal handlers reliably
909 =item Thread::Specific
915 Base class for tied arrays
919 Base class definitions for tied handles
923 Base class definitions for tied hashes
927 Use references as hash keys
931 Base class definitions for tied scalars
933 =item Tie::SubstrHash
935 Fixed-table-size, fixed-key-length hashing
939 Efficiently compute time from local and GMT time
943 By-name interface to Perl's built-in gmtime() function
945 =item Time::localtime
947 By-name interface to Perl's built-in localtime() function
951 Internal object used by Time::gmtime and Time::localtime
955 Base class for ALL classes (blessed references)
959 Unicode character database
963 By-name interface to Perl's built-in getgr*() functions
967 By-name interface to Perl's built-in getpw*() functions
971 Interfaces to some Win32 API Functions
975 To find out I<all> modules installed on your system, including
976 those without documentation or outside the standard release,
979 % find `perl -e 'print "@INC"'` -name '*.pm' -print
981 They should all have their own documentation installed and accessible
982 via your system man(1) command. If you do not have a B<find>
983 program, you can use the Perl B<find2perl> program instead, which
984 generates Perl code as output you can run through perl. If you
985 have a B<man> program but it doesn't find your modules, you'll have
986 to fix your manpath. See L<perl> for details. If you have no
987 system B<man> command, you might try the B<perldoc> program.
989 =head2 Extension Modules
991 Extension modules are written in C (or a mix of Perl and C). They
992 are usually dynamically loaded into Perl if and when you need them,
993 but may also be be linked in statically. Supported extension modules
994 include Socket, Fcntl, and POSIX.
996 Many popular C extension modules do not come bundled (at least, not
997 completely) due to their sizes, volatility, or simply lack of time
998 for adequate testing and configuration across the multitude of
999 platforms on which Perl was beta-tested. You are encouraged to
1000 look for them on CPAN (described below), or using web search engines
1001 like Alta Vista or Deja News.
1005 CPAN stands for Comprehensive Perl Archive Network; it's a globally
1006 replicated trove of Perl materials, including documentation, style
1007 guides, tricks and traps, alternate ports to non-Unix systems and
1008 occasional binary distributions for these. Search engines for
1009 CPAN can be found at http://cpan.perl.com/ and at
1010 http://theory.uwinnipeg.ca/mod_perl/cpan-search.pl .
1012 Most importantly, CPAN includes around a thousand unbundled modules,
1013 some of which require a C compiler to build. Major categories of
1020 Language Extensions and Documentation Tools
1028 Operating System Interfaces
1032 Networking, Device Control (modems) and InterProcess Communication
1036 Data Types and Data Type Utilities
1048 Interfaces to / Emulations of Other Programming Languages
1052 File Names, File Systems and File Locking (see also File Handles)
1056 String Processing, Language Text Processing, Parsing, and Searching
1060 Option, Argument, Parameter, and Configuration File Processing
1064 Internationalization and Locale
1068 Authentication, Security, and Encryption
1072 World Wide Web, HTML, HTTP, CGI, MIME
1076 Server and Daemon Utilities
1080 Archiving and Compression
1084 Images, Pixmap and Bitmap Manipulation, Drawing, and Graphing
1088 Mail and Usenet News
1092 Control Flow Utilities (callbacks and exceptions etc)
1096 File Handle and Input/Output Stream Utilities
1100 Miscellaneous Modules
1104 Registered CPAN sites as of this writing include the following.
1105 You should try to choose one close to you:
1115 ftp://ftp.is.co.za/programming/perl/CPAN/
1116 ftp://ftp.saix.net/pub/CPAN/
1117 ftp://ftpza.co.za/pub/mirrors/cpan/
1118 ftp://ftp.sun.ac.za/CPAN/
1130 ftp://freesoft.cei.gov.cn/pub/languages/perl/CPAN/
1131 http://www2.linuxforum.net/mirror/CPAN/
1132 http://cpan.shellhung.org/
1133 ftp://ftp.shellhung.org/pub/CPAN
1139 http://CPAN.pacific.net.hk/
1140 ftp://ftp.pacific.net.hk/pub/mirror/CPAN/
1146 http://piksi.itb.ac.id/CPAN/
1147 ftp://mirrors.piksi.itb.ac.id/CPAN/
1148 http://CPAN.mweb.co.id/
1149 ftp://ftp.mweb.co.id/pub/languages/perl/CPAN/
1155 http://www.iglu.org.il:/pub/CPAN/
1156 ftp://ftp.iglu.org.il/pub/CPAN/
1157 http://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/
1158 ftp://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/
1164 ftp://ftp.u-aizu.ac.jp/pub/lang/perl/CPAN/
1165 ftp://ftp.kddlabs.co.jp/CPAN/
1166 http://mirror.nucba.ac.jp/mirror/Perl/
1167 ftp://mirror.nucba.ac.jp/mirror/Perl/
1168 ftp://ftp.meisei-u.ac.jp/pub/CPAN/
1169 ftp://ftp.jaist.ac.jp/pub/lang/perl/CPAN/
1170 ftp://ftp.dti.ad.jp/pub/lang/CPAN/
1171 ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/
1177 ftp://ftp.isu.net.sa/pub/CPAN/
1183 http://cpan.hjc.edu.sg
1184 http://ftp.nus.edu.sg/unix/perl/CPAN/
1185 ftp://ftp.nus.edu.sg/pub/unix/perl/CPAN/
1191 http://CPAN.bora.net/
1192 ftp://ftp.bora.net/pub/CPAN/
1193 http://ftp.kornet.net/CPAN/
1194 ftp://ftp.kornet.net/pub/CPAN/
1195 ftp://ftp.nuri.net/pub/CPAN/
1201 ftp://coda.nctu.edu.tw/UNIX/perl/CPAN
1202 ftp://ftp.ee.ncku.edu.tw/pub/perl/CPAN/
1203 ftp://ftp1.sinica.edu.tw/pub1/perl/CPAN/
1209 http://download.nectec.or.th/CPAN/
1210 ftp://ftp.nectec.or.th/pub/languages/CPAN/
1211 ftp://ftp.cs.riubon.ac.th/pub/mirrors/CPAN/
1215 =head2 Central America
1223 ftp://ftp.linux.co.cr/mirrors/CPAN/
1224 http://ftp.ucr.ac.cr/Unix/CPAN/
1225 ftp://ftp.ucr.ac.cr/pub/Unix/CPAN/
1237 ftp://ftp.tuwien.ac.at/pub/languages/perl/CPAN/
1243 http://ftp.easynet.be/CPAN/
1244 ftp://ftp.easynet.be/CPAN/
1245 ftp://ftp.kulnet.kuleuven.ac.be/pub/mirror/CPAN/
1251 ftp://ftp.ntrl.net/pub/mirrors/CPAN/
1257 ftp://ftp.linux.hr/pub/CPAN/
1263 http://www.fi.muni.cz/pub/perl/
1264 ftp://ftp.fi.muni.cz/pub/perl/
1265 ftp://sunsite.mff.cuni.cz/MIRRORS/ftp.funet.fi/pub/languages/perl/CPAN/
1271 ftp://sunsite.auc.dk/pub/languages/perl/CPAN/
1272 http://www.cpan.dk/CPAN/
1273 ftp://www.cpan.dk/ftp.cpan.org/CPAN/
1279 http://www.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN
1280 ftp://ftp.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN/
1281 ftp://ftp.demon.co.uk/pub/mirrors/perl/CPAN/
1282 ftp://ftp.flirble.org/pub/languages/perl/CPAN/
1283 ftp://ftp.plig.org/pub/CPAN/
1284 ftp://sunsite.doc.ic.ac.uk/packages/CPAN/
1285 http://mirror.uklinux.net/CPAN/
1286 ftp://mirror.uklinux.net/pub/CPAN/
1287 ftp://usit.shef.ac.uk/pub/packages/CPAN/
1293 ftp://ftp.ut.ee/pub/languages/perl/CPAN/
1299 ftp://ftp.funet.fi/pub/languages/perl/CPAN/
1305 ftp://cpan.ftp.worldonline.fr/pub/CPAN/
1306 ftp://ftp.club-internet.fr/pub/perl/CPAN/
1307 ftp://ftp.lip6.fr/pub/perl/CPAN/
1308 ftp://ftp.oleane.net/pub/mirrors/CPAN/
1309 ftp://ftp.pasteur.fr/pub/computing/CPAN/
1310 ftp://cpan.cict.fr/pub/CPAN/
1311 ftp://ftp.uvsq.fr/pub/perl/CPAN/
1317 ftp://ftp.rz.ruhr-uni-bochum.de/pub/CPAN/
1318 ftp://ftp.freenet.de/pub/ftp.cpan.org/pub/CPAN/
1319 ftp://ftp.uni-erlangen.de/pub/source/CPAN/
1320 ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/CPAN
1321 ftp://ftp.gigabell.net/pub/CPAN/
1322 http://ftp.gwdg.de/pub/languages/perl/CPAN/
1323 ftp://ftp.gwdg.de/pub/languages/perl/CPAN/
1324 ftp://ftp.uni-hamburg.de/pub/soft/lang/perl/CPAN/
1325 ftp://ftp.leo.org/pub/comp/general/programming/languages/script/perl/CPAN/
1326 ftp://ftp.mpi-sb.mpg.de/pub/perl/CPAN/
1327 ftp://ftp.gmd.de/mirrors/CPAN/
1333 ftp://ftp.forthnet.gr/pub/languages/perl/CPAN
1334 ftp://ftp.ntua.gr/pub/lang/perl/
1340 http://cpan.artifact.hu/
1341 ftp://cpan.artifact.hu/CPAN/
1342 ftp://ftp.kfki.hu/pub/packages/perl/CPAN/
1349 ftp://ftp.gm.is/pub/CPAN/
1355 http://cpan.indigo.ie/
1356 ftp://cpan.indigo.ie/pub/CPAN/
1357 http://sunsite.compapp.dcu.ie/pub/perl/
1358 ftp://sunsite.compapp.dcu.ie/pub/perl/
1364 http://cpan.nettuno.it/
1365 http://gusp.dyndns.org/CPAN/
1366 ftp://gusp.dyndns.org/pub/CPAN
1367 http://softcity.iol.it/cpan
1368 ftp://softcity.iol.it/pub/cpan
1369 ftp://ftp.unina.it/pub/Other/CPAN/
1370 ftp://ftp.unipi.it/pub/mirror/perl/CPAN/
1371 ftp://cis.uniRoma2.it/CPAN/
1372 ftp://ftp.edisontel.it/pub/CPAN_Mirror/
1373 ftp://ftp.flashnet.it/pub/CPAN/
1379 http://kvin.lv/pub/CPAN/
1385 ftp://download.xs4all.nl/pub/mirror/CPAN/
1386 ftp://ftp.nl.uu.net/pub/CPAN/
1387 ftp://ftp.nluug.nl/pub/languages/perl/CPAN/
1388 ftp://ftp.cpan.nl/pub/CPAN/
1389 http://www.cs.uu.nl/mirror/CPAN/
1390 ftp://ftp.cs.uu.nl/mirror/CPAN/
1396 ftp://sunsite.uio.no/pub/languages/perl/CPAN/
1397 ftp://ftp.uit.no/pub/languages/perl/cpan/
1403 ftp://ftp.pk.edu.pl/pub/lang/perl/CPAN/
1404 ftp://ftp.mega.net.pl/pub/mirrors/ftp.perl.com/
1405 ftp://ftp.man.torun.pl/pub/doc/CPAN/
1406 ftp://sunsite.icm.edu.pl/pub/CPAN/
1412 ftp://ftp.ua.pt/pub/CPAN/
1413 ftp://perl.di.uminho.pt/pub/CPAN/
1414 ftp://ftp.ist.utl.pt/pub/CPAN/
1415 ftp://ftp.netc.pt/pub/CPAN/
1421 ftp://archive.logicnet.ro/mirrors/ftp.cpan.org/CPAN/
1422 ftp://ftp.kappa.ro/pub/mirrors/ftp.perl.org/pub/CPAN/
1423 ftp://ftp.dntis.ro/pub/cpan/
1424 ftp://ftp.opsynet.com/cpan/
1425 ftp://ftp.dnttm.ro/pub/CPAN/
1426 ftp://ftp.timisoara.roedu.net/mirrors/CPAN/
1432 ftp://ftp.chg.ru/pub/lang/perl/CPAN/
1433 http://cpan.rinet.ru/
1434 ftp://cpan.rinet.ru/pub/mirror/CPAN/
1435 ftp://ftp.aha.ru/pub/CPAN/
1436 ftp://ftp.sai.msu.su/pub/lang/perl/CPAN/
1442 ftp://ftp.entry.sk/pub/languages/perl/CPAN/
1448 ftp://ftp.arnes.si/software/perl/CPAN/
1454 ftp://ftp.rediris.es/mirror/CPAN/
1455 ftp://ftp.etse.urv.es/pub/perl/
1461 http://ftp.du.se/CPAN/
1462 ftp://ftp.du.se/pub/CPAN/
1463 ftp://ftp.sunet.se/pub/lang/perl/CPAN/
1469 ftp://ftp.danyk.ch/CPAN/
1470 ftp://sunsite.cnlab-switch.ch/mirror/CPAN/
1476 ftp://sunsite.bilkent.edu.tr/pub/languages/CPAN/
1480 =head2 North America
1494 http://sunsite.ualberta.ca/pub/Mirror/CPAN/
1495 ftp://sunsite.ualberta.ca/pub/Mirror/CPAN/
1501 http://theoryx5.uwinnipeg.ca/pub/CPAN/
1502 ftp://theoryx5.uwinnipeg.ca/pub/CPAN/
1508 ftp://cpan.chebucto.ns.ca/pub/CPAN/
1514 ftp://ftp.crc.ca/pub/packages/lang/perl/CPAN/
1520 http://www.msg.com.mx/CPAN/
1521 ftp://ftp.msg.com.mx/pub/CPAN/
1535 http://mirror.hiwaay.net/CPAN/
1536 ftp://mirror.hiwaay.net/CPAN/
1542 http://www.cpan.org/
1543 ftp://ftp.cpan.org/CPAN/
1544 ftp://cpan.nas.nasa.gov/pub/perl/CPAN/
1545 ftp://ftp.digital.com/pub/plan/perl/CPAN/
1546 http://www.kernel.org/pub/mirrors/cpan/
1547 ftp://ftp.kernel.org/pub/mirrors/cpan/
1548 http://www.perl.com/CPAN/
1549 http://download.sourceforge.net/mirrors/CPAN/
1555 ftp://ftp.cs.colorado.edu/pub/perl/CPAN/
1561 ftp://ftp.cise.ufl.edu/pub/perl/CPAN/
1567 ftp://ftp.twoguys.org/CPAN/
1573 http://www.neurogames.com/mirrors/CPAN
1574 http://uiarchive.uiuc.edu/mirrors/ftp/ftp.cpan.org/pub/CPAN/
1575 ftp://uiarchive.uiuc.edu/mirrors/ftp/ftp.cpan.org/pub/CPAN/
1581 ftp://ftp.uwsg.indiana.edu/pub/perl/CPAN/
1582 http://cpan.nitco.com/
1583 ftp://cpan.nitco.com/pub/CPAN/
1584 ftp://cpan.in-span.net/
1585 http://csociety-ftp.ecn.purdue.edu/pub/CPAN
1586 ftp://csociety-ftp.ecn.purdue.edu/pub/CPAN
1592 http://cpan.uky.edu/
1593 ftp://cpan.uky.edu/pub/CPAN/
1599 ftp://ftp.ccs.neu.edu/net/mirrors/ftp.funet.fi/pub/languages/perl/CPAN/
1600 ftp://ftp.iguide.com/pub/mirrors/packages/perl/CPAN/
1606 ftp://ftp.cpanel.net/pub/CPAN/
1612 ftp://ftp.freesoftware.com/pub/perl/CPAN/
1613 http://www.deao.net/mirrors/CPAN/
1614 ftp://ftp.deao.net/pub/CPAN/
1615 ftp://ftp.stealth.net/pub/mirrors/ftp.cpan.org/pub/CPAN/
1616 http://mirror.nyc.anidea.com/CPAN/
1617 ftp://mirror.nyc.anidea.com/pub/CPAN/
1618 http://www.rge.com/pub/languages/perl/
1619 ftp://ftp.rge.com/pub/languages/perl/
1620 ftp://mirrors.cloud9.net/pub/mirrors/CPAN/
1626 ftp://ftp.duke.edu/pub/perl/
1632 ftp://ftp.loaded.net/pub/CPAN/
1638 ftp://ftp.ou.edu/mirrors/CPAN/
1644 ftp://ftp.orst.edu/pub/packages/CPAN/
1650 http://ftp.epix.net/CPAN/
1651 ftp://ftp.epix.net/pub/languages/perl/
1652 ftp://carroll.cac.psu.edu/pub/CPAN/
1658 ftp://ftp.sunsite.utk.edu/pub/CPAN/
1664 http://ftp.sedl.org/pub/mirrors/CPAN/
1665 http://jhcloos.com/pub/mirror/CPAN/
1666 ftp://jhcloos.com/pub/mirror/CPAN/
1672 ftp://mirror.xmission.com/CPAN/
1678 http://mirrors.rcn.net/pub/lang/CPAN/
1679 ftp://mirrors.rcn.net/pub/lang/CPAN/
1680 ftp://ruff.cs.jmu.edu/pub/CPAN/
1681 http://perl.Liquidation.com/CPAN/
1687 http://cpan.llarian.net/
1688 ftp://cpan.llarian.net/pub/CPAN/
1689 ftp://ftp-mirror.internap.com/pub/CPAN/
1690 ftp://ftp.spu.edu/pub/CPAN/
1704 http://ftp.planetmirror.com/pub/CPAN/
1705 ftp://ftp.planetmirror.com/pub/CPAN/
1706 ftp://mirror.aarnet.edu.au/pub/perl/CPAN/
1707 ftp://cpan.topend.com.au/pub/CPAN/
1713 ftp://ftp.auckland.ac.nz/pub/perl/CPAN/
1717 =head2 South America
1725 ftp://mirrors.bannerlandia.com.ar/mirrors/CPAN/
1731 ftp://cpan.pop-mg.com.br/pub/CPAN/
1732 ftp://ftp.matrix.com.br/pub/perl/
1733 ftp://cpan.if.usp.br/pub/mirror/CPAN/
1739 ftp://ftp.psinet.cl/pub/programming/perl/CPAN/
1740 ftp://sunsite.dcc.uchile.cl/pub/lang/perl/
1744 For an up-to-date listing of CPAN sites,
1745 see http://www.cpan.org/SITES or ftp://www.cpan.org/SITES .
1747 =head1 Modules: Creation, Use, and Abuse
1749 (The following section is borrowed directly from Tim Bunce's modules
1750 file, available at your nearest CPAN site.)
1752 Perl implements a class using a package, but the presence of a
1753 package doesn't imply the presence of a class. A package is just a
1754 namespace. A class is a package that provides subroutines that can be
1755 used as methods. A method is just a subroutine that expects, as its
1756 first argument, either the name of a package (for "static" methods),
1757 or a reference to something (for "virtual" methods).
1759 A module is a file that (by convention) provides a class of the same
1760 name (sans the .pm), plus an import method in that class that can be
1761 called to fetch exported symbols. This module may implement some of
1762 its methods by loading dynamic C or C++ objects, but that should be
1763 totally transparent to the user of the module. Likewise, the module
1764 might set up an AUTOLOAD function to slurp in subroutine definitions on
1765 demand, but this is also transparent. Only the F<.pm> file is required to
1766 exist. See L<perlsub>, L<perltoot>, and L<AutoLoader> for details about
1767 the AUTOLOAD mechanism.
1769 =head2 Guidelines for Module Creation
1775 Do similar modules already exist in some form?
1777 If so, please try to reuse the existing modules either in whole or
1778 by inheriting useful features into a new class. If this is not
1779 practical try to get together with the module authors to work on
1780 extending or enhancing the functionality of the existing modules.
1781 A perfect example is the plethora of packages in perl4 for dealing
1782 with command line options.
1784 If you are writing a module to expand an already existing set of
1785 modules, please coordinate with the author of the package. It
1786 helps if you follow the same naming scheme and module interaction
1787 scheme as the original author.
1791 Try to design the new module to be easy to extend and reuse.
1793 Try to C<use warnings;> (or C<use warnings qw(...);>).
1794 Remember that you can add C<no warnings qw(...);> to individual blocks
1795 of code that need less warnings.
1797 Use blessed references. Use the two argument form of bless to bless
1798 into the class name given as the first parameter of the constructor,
1803 return bless {}, $class;
1806 or even this if you'd like it to be used as either a static
1807 or a virtual method.
1811 my $class = ref($self) || $self;
1812 return bless {}, $class;
1815 Pass arrays as references so more parameters can be added later
1816 (it's also faster). Convert functions into methods where
1817 appropriate. Split large methods into smaller more flexible ones.
1818 Inherit methods from other modules if appropriate.
1820 Avoid class name tests like: C<die "Invalid" unless ref $ref eq 'FOO'>.
1821 Generally you can delete the C<eq 'FOO'> part with no harm at all.
1822 Let the objects look after themselves! Generally, avoid hard-wired
1823 class names as far as possible.
1825 Avoid C<< $r->Class::func() >> where using C<@ISA=qw(... Class ...)> and
1826 C<< $r->func() >> would work (see L<perlbot> for more details).
1828 Use autosplit so little used or newly added functions won't be a
1829 burden to programs that don't use them. Add test functions to
1830 the module after __END__ either using AutoSplit or by saying:
1832 eval join('',<main::DATA>) || die $@ unless caller();
1834 Does your module pass the 'empty subclass' test? If you say
1835 C<@SUBCLASS::ISA = qw(YOURCLASS);> your applications should be able
1836 to use SUBCLASS in exactly the same way as YOURCLASS. For example,
1837 does your application still work if you change: C<$obj = new YOURCLASS;>
1838 into: C<$obj = new SUBCLASS;> ?
1840 Avoid keeping any state information in your packages. It makes it
1841 difficult for multiple other packages to use yours. Keep state
1842 information in objects.
1846 Try to C<use strict;> (or C<use strict qw(...);>).
1847 Remember that you can add C<no strict qw(...);> to individual blocks
1848 of code that need less strictness.
1852 Follow the guidelines in the perlstyle(1) manual.
1858 Some simple style guidelines
1860 The perlstyle manual supplied with Perl has many helpful points.
1862 Coding style is a matter of personal taste. Many people evolve their
1863 style over several years as they learn what helps them write and
1864 maintain good code. Here's one set of assorted suggestions that
1865 seem to be widely used by experienced developers:
1867 Use underscores to separate words. It is generally easier to read
1868 $var_names_like_this than $VarNamesLikeThis, especially for
1869 non-native speakers of English. It's also a simple rule that works
1870 consistently with VAR_NAMES_LIKE_THIS.
1872 Package/Module names are an exception to this rule. Perl informally
1873 reserves lowercase module names for 'pragma' modules like integer
1874 and strict. Other modules normally begin with a capital letter and
1875 use mixed case with no underscores (need to be short and portable).
1877 You may find it helpful to use letter case to indicate the scope
1878 or nature of a variable. For example:
1880 $ALL_CAPS_HERE constants only (beware clashes with Perl vars)
1881 $Some_Caps_Here package-wide global/static
1882 $no_caps_here function scope my() or local() variables
1884 Function and method names seem to work best as all lowercase.
1885 e.g., C<< $obj->as_string() >>.
1887 You can use a leading underscore to indicate that a variable or
1888 function should not be used outside the package that defined it.
1892 Select what to export.
1894 Do NOT export method names!
1896 Do NOT export anything else by default without a good reason!
1898 Exports pollute the namespace of the module user. If you must
1899 export try to use @EXPORT_OK in preference to @EXPORT and avoid
1900 short or common names to reduce the risk of name clashes.
1902 Generally anything not exported is still accessible from outside the
1903 module using the ModuleName::item_name (or C<< $blessed_ref->method >>)
1904 syntax. By convention you can use a leading underscore on names to
1905 indicate informally that they are 'internal' and not for public use.
1907 (It is actually possible to get private functions by saying:
1908 C<my $subref = sub { ... }; &$subref;>. But there's no way to call that
1909 directly as a method, because a method must have a name in the symbol
1912 As a general rule, if the module is trying to be object oriented
1913 then export nothing. If it's just a collection of functions then
1914 @EXPORT_OK anything but use @EXPORT with caution.
1918 Select a name for the module.
1920 This name should be as descriptive, accurate, and complete as
1921 possible. Avoid any risk of ambiguity. Always try to use two or
1922 more whole words. Generally the name should reflect what is special
1923 about what the module does rather than how it does it. Please use
1924 nested module names to group informally or categorize a module.
1925 There should be a very good reason for a module not to have a nested name.
1926 Module names should begin with a capital letter.
1928 Having 57 modules all called Sort will not make life easy for anyone
1929 (though having 23 called Sort::Quick is only marginally better :-).
1930 Imagine someone trying to install your module alongside many others.
1931 If in any doubt ask for suggestions in comp.lang.perl.misc.
1933 If you are developing a suite of related modules/classes it's good
1934 practice to use nested classes with a common prefix as this will
1935 avoid namespace clashes. For example: Xyz::Control, Xyz::View,
1936 Xyz::Model etc. Use the modules in this list as a naming guide.
1938 If adding a new module to a set, follow the original author's
1939 standards for naming modules and the interface to methods in
1942 If developing modules for private internal or project specific use,
1943 that will never be released to the public, then you should ensure
1944 that their names will not clash with any future public module. You
1945 can do this either by using the reserved Local::* category or by
1946 using a category name that includes an underscore like Foo_Corp::*.
1948 To be portable each component of a module name should be limited to
1949 11 characters. If it might be used on MS-DOS then try to ensure each is
1950 unique in the first 8 characters. Nested modules make this easier.
1954 Have you got it right?
1956 How do you know that you've made the right decisions? Have you
1957 picked an interface design that will cause problems later? Have
1958 you picked the most appropriate name? Do you have any questions?
1960 The best way to know for sure, and pick up many helpful suggestions,
1961 is to ask someone who knows. Comp.lang.perl.misc is read by just about
1962 all the people who develop modules and it's the best place to ask.
1964 All you need to do is post a short summary of the module, its
1965 purpose and interfaces. A few lines on each of the main methods is
1966 probably enough. (If you post the whole module it might be ignored
1967 by busy people - generally the very people you want to read it!)
1969 Don't worry about posting if you can't say when the module will be
1970 ready - just say so in the message. It might be worth inviting
1971 others to help you, they may be able to complete it for you!
1975 README and other Additional Files.
1977 It's well known that software developers usually fully document the
1978 software they write. If, however, the world is in urgent need of
1979 your software and there is not enough time to write the full
1980 documentation please at least provide a README file containing:
1986 A description of the module/package/extension etc.
1990 A copyright notice - see below.
1994 Prerequisites - what else you may need to have.
1998 How to build it - possible changes to Makefile.PL etc.
2006 Recent changes in this release, especially incompatibilities
2010 Changes / enhancements you plan to make in the future.
2014 If the README file seems to be getting too large you may wish to
2015 split out some of the sections into separate files: INSTALL,
2020 =item Adding a Copyright Notice.
2023 How you choose to license your work is a personal decision.
2024 The general mechanism is to assert your Copyright and then make
2025 a declaration of how others may copy/use/modify your work.
2027 Perl, for example, is supplied with two types of licence: The GNU
2028 GPL and The Artistic Licence (see the files README, Copying, and
2029 Artistic). Larry has good reasons for NOT just using the GNU GPL.
2031 My personal recommendation, out of respect for Larry, Perl, and the
2032 Perl community at large is to state something simply like:
2034 Copyright (c) 1995 Your Name. All rights reserved.
2035 This program is free software; you can redistribute it and/or
2036 modify it under the same terms as Perl itself.
2038 This statement should at least appear in the README file. You may
2039 also wish to include it in a Copying file and your source files.
2040 Remember to include the other words in addition to the Copyright.
2044 Give the module a version/issue/release number.
2046 To be fully compatible with the Exporter and MakeMaker modules you
2047 should store your module's version number in a non-my package
2048 variable called $VERSION. This should be a floating point
2049 number with at least two digits after the decimal (i.e., hundredths,
2050 e.g, C<$VERSION = "0.01">). Don't use a "1.3.2" style version.
2051 See L<Exporter> for details.
2053 It may be handy to add a function or method to retrieve the number.
2054 Use the number in announcements and archive file names when
2055 releasing the module (ModuleName-1.02.tar.Z).
2056 See perldoc ExtUtils::MakeMaker.pm for details.
2060 How to release and distribute a module.
2062 It's good idea to post an announcement of the availability of your
2063 module (or the module itself if small) to the comp.lang.perl.announce
2064 Usenet newsgroup. This will at least ensure very wide once-off
2067 If possible, register the module with CPAN. You should
2068 include details of its location in your announcement.
2070 Some notes about ftp archives: Please use a long descriptive file
2071 name that includes the version number. Most incoming directories
2072 will not be readable/listable, i.e., you won't be able to see your
2073 file after uploading it. Remember to send your email notification
2074 message as soon as possible after uploading else your file may get
2075 deleted automatically. Allow time for the file to be processed
2076 and/or check the file has been processed before announcing its
2079 FTP Archives for Perl Modules:
2081 Follow the instructions and links on:
2083 http://www.cpan.org/modules/00modlist.long.html
2084 http://www.cpan.org/modules/04pause.html
2086 or upload to one of these sites:
2088 https://pause.kbx.de/pause/
2089 http://pause.perl.org/pause/
2091 and notify <modules@perl.org>.
2093 By using the WWW interface you can ask the Upload Server to mirror
2094 your modules from your ftp or WWW site into your own directory on
2097 Please remember to send me an updated entry for the Module list!
2101 Take care when changing a released module.
2103 Always strive to remain compatible with previous released versions.
2104 Otherwise try to add a mechanism to revert to the
2105 old behavior if people rely on it. Document incompatible changes.
2111 =head2 Guidelines for Converting Perl 4 Library Scripts into Modules
2117 There is no requirement to convert anything.
2119 If it ain't broke, don't fix it! Perl 4 library scripts should
2120 continue to work with no problems. You may need to make some minor
2121 changes (like escaping non-array @'s in double quoted strings) but
2122 there is no need to convert a .pl file into a Module for just that.
2126 Consider the implications.
2128 All Perl applications that make use of the script will need to
2129 be changed (slightly) if the script is converted into a module. Is
2130 it worth it unless you plan to make other changes at the same time?
2134 Make the most of the opportunity.
2136 If you are going to convert the script to a module you can use the
2137 opportunity to redesign the interface. The guidelines for module
2138 creation above include many of the issues you should consider.
2142 The pl2pm utility will get you started.
2144 This utility will read *.pl files (given as parameters) and write
2145 corresponding *.pm files. The pl2pm utilities does the following:
2151 Adds the standard Module prologue lines
2155 Converts package specifiers from ' to ::
2159 Converts die(...) to croak(...)
2163 Several other minor changes
2167 Being a mechanical process pl2pm is not bullet proof. The converted
2168 code will need careful checking, especially any package statements.
2169 Don't delete the original .pl file till the new .pm one works!
2173 =head2 Guidelines for Reusing Application Code
2179 Complete applications rarely belong in the Perl Module Library.
2183 Many applications contain some Perl code that could be reused.
2185 Help save the world! Share your code in a form that makes it easy
2190 Break-out the reusable code into one or more separate module files.
2194 Take the opportunity to reconsider and redesign the interfaces.
2198 In some cases the 'application' can then be reduced to a small
2200 fragment of code built on top of the reusable modules. In these cases
2201 the application could invoked as:
2203 % perl -e 'use Module::Name; method(@ARGV)' ...
2205 % perl -mModule::Name ... (in perl5.002 or higher)
2211 Perl does not enforce private and public parts of its modules as you may
2212 have been used to in other languages like C++, Ada, or Modula-17. Perl
2213 doesn't have an infatuation with enforced privacy. It would prefer
2214 that you stayed out of its living room because you weren't invited, not
2215 because it has a shotgun.
2217 The module and its user have a contract, part of which is common law,
2218 and part of which is "written". Part of the common law contract is
2219 that a module doesn't pollute any namespace it wasn't asked to. The
2220 written contract for the module (A.K.A. documentation) may make other
2221 provisions. But then you know when you C<use RedefineTheWorld> that
2222 you're redefining the world and willing to take the consequences.