Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / perl-5.8.0 / lib / 5.8.0 / pod / perlmodlib.pod
CommitLineData
86530b38
AT
1=for maintainers
2Generated by perlmodlib.PL -- DO NOT EDIT!
3
4=head1 NAME
5
6perlmodlib - constructing new Perl modules and finding existing ones
7
8=head1 DESCRIPTION
9
10=head1 THE PERL MODULE LIBRARY
11
12Many modules are included the Perl distribution. These are described
13below, and all end in F<.pm>. You may discover compiled library
14file (usually ending in F<.so>) or small pieces of modules to be
15autoloaded (ending in F<.al>); these were automatically generated
16by the installation process. You may also discover files in the
17library directory that end in either F<.pl> or F<.ph>. These are
18old libraries supplied so that old programs that use them still
19run. The F<.pl> files will all eventually be converted into standard
20modules, and the F<.ph> files made by B<h2ph> will probably end up
21as extension modules made by B<h2xs>. (Some F<.ph> values may
22already be available through the POSIX, Errno, or Fcntl modules.)
23The B<pl2pm> file in the distribution may help in your conversion,
24but it's just a mechanical process and therefore far from bulletproof.
25
26=head2 Pragmatic Modules
27
28They work somewhat like compiler directives (pragmata) in that they
29tend to affect the compilation of your program, and thus will usually
30work well only when used within a C<use>, or C<no>. Most of these
31are lexically scoped, so an inner BLOCK may countermand them
32by saying:
33
34 no integer;
35 no strict 'refs';
36 no warnings;
37
38which lasts until the end of that BLOCK.
39
40Some pragmas are lexically scoped--typically those that affect the
41C<$^H> hints variable. Others affect the current package instead,
42like C<use vars> and C<use subs>, which allow you to predeclare a
43variables or subroutines within a particular I<file> rather than
44just a block. Such declarations are effective for the entire file
45for which they were declared. You cannot rescind them with C<no
46vars> or C<no subs>.
47
48The following pragmas are defined (and have their own documentation).
49
50=over 12
51
52=item attributes
53
54Get/set subroutine or variable attributes
55
56=item attrs
57
58Set/get attributes of a subroutine (deprecated)
59
60=item autouse
61
62Postpone load of modules until a function is used
63
64=item base
65
66Establish IS-A relationship with base class at compile time
67
68=item bigint
69
70Transparent big integer support for Perl
71
72=item bignum
73
74Transparent BigNumber support for Perl
75
76=item bigrat
77
78Transparent BigNumber/BigRational support for Perl
79
80=item blib
81
82Use MakeMaker's uninstalled version of a package
83
84=item bytes
85
86Force byte semantics rather than character semantics
87
88=item charnames
89
90Define character names for C<\N{named}> string literal escapes
91
92=item constant
93
94Declare constants
95
96=item diagnostics
97
98Perl compiler pragma to force verbose warning diagnostics
99
100=item encoding
101
102Allows you to write your script in non-ascii or non-utf8
103
104=item fields
105
106Compile-time class fields
107
108=item filetest
109
110Control the filetest permission operators
111
112=item if
113
114C<use> a Perl module if a condition holds
115
116=item integer
117
118Use integer arithmetic instead of floating point
119
120=item less
121
122Request less of something from the compiler
123
124=item locale
125
126Use and avoid POSIX locales for built-in operations
127
128=item open
129
130Set default PerlIO layers for input and output
131
132=item ops
133
134Restrict unsafe operations when compiling
135
136=item overload
137
138Package for overloading perl operations
139
140=item re
141
142Alter regular expression behaviour
143
144=item sigtrap
145
146Enable simple signal handling
147
148=item sort
149
150Control sort() behaviour
151
152=item strict
153
154Restrict unsafe constructs
155
156=item subs
157
158Predeclare sub names
159
160=item threads
161
162Perl extension allowing use of interpreter based threads from perl
163
164=item utf8
165
166Enable/disable UTF-8 (or UTF-EBCDIC) in source code
167
168=item vars
169
170Predeclare global variable names (obsolete)
171
172=item vmsish
173
174Control VMS-specific language features
175
176=item warnings
177
178Control optional warnings
179
180=item warnings::register
181
182Warnings import function
183
184=back
185
186=head2 Standard Modules
187
188Standard, bundled modules are all expected to behave in a well-defined
189manner with respect to namespace pollution because they use the
190Exporter module. See their own documentation for details.
191
192=over 12
193
194=item AnyDBM_File
195
196Provide framework for multiple DBMs
197
198=item Attribute::Handlers
199
200Simpler definition of attribute handlers
201
202=item AutoLoader
203
204Load subroutines only on demand
205
206=item AutoSplit
207
208Split a package for autoloading
209
210=item B
211
212The Perl Compiler
213
214=item B::Asmdata
215
216Autogenerated data about Perl ops, used to generate bytecode
217
218=item B::Assembler
219
220Assemble Perl bytecode
221
222=item B::Bblock
223
224Walk basic blocks
225
226=item B::Bytecode
227
228Perl compiler's bytecode backend
229
230=item B::C
231
232Perl compiler's C backend
233
234=item B::CC
235
236Perl compiler's optimized C translation backend
237
238=item B::Concise
239
240Walk Perl syntax tree, printing concise info about ops
241
242=item B::Debug
243
244Walk Perl syntax tree, printing debug info about ops
245
246=item B::Deparse
247
248Perl compiler backend to produce perl code
249
250=item B::Disassembler
251
252Disassemble Perl bytecode
253
254=item B::Lint
255
256Perl lint
257
258=item B::Showlex
259
260Show lexical variables used in functions or files
261
262=item B::Stackobj
263
264Helper module for CC backend
265
266=item B::Stash
267
268Show what stashes are loaded
269
270=item B::Terse
271
272Walk Perl syntax tree, printing terse info about ops
273
274=item B::Xref
275
276Generates cross reference reports for Perl programs
277
278=item Benchmark
279
280Benchmark running times of Perl code
281
282=item ByteLoader
283
284Load byte compiled perl code
285
286=item CGI
287
288Simple Common Gateway Interface Class
289
290=item CGI::Apache
291
292Backward compatibility module for CGI.pm
293
294=item CGI::Carp
295
296CGI routines for writing to the HTTPD (or other) error log
297
298=item CGI::Cookie
299
300Interface to Netscape Cookies
301
302=item CGI::Fast
303
304CGI Interface for Fast CGI
305
306=item CGI::Pretty
307
308Module to produce nicely formatted HTML code
309
310=item CGI::Push
311
312Simple Interface to Server Push
313
314=item CGI::Switch
315
316Backward compatibility module for defunct CGI::Switch
317
318=item CGI::Util
319
320Internal utilities used by CGI module
321
322=item CPAN
323
324Query, download and build perl modules from CPAN sites
325
326=item CPAN::FirstTime
327
328Utility for CPAN::Config file Initialization
329
330=item CPAN::Nox
331
332Wrapper around CPAN.pm without using any XS module
333
334=item Carp
335
336Warn of errors (from perspective of caller)
337
338=item Carp::Heavy
339
340No user serviceable parts inside
341
342=item Class::ISA
343
344Report the search path for a class's ISA tree
345
346=item Class::Struct
347
348Declare struct-like datatypes as Perl classes
349
350=item Config
351
352Access Perl configuration information
353
354=item Cwd
355
356Get pathname of current working directory
357
358=item DB
359
360Programmatic interface to the Perl debugging API (draft, subject to
361
362=item DB_File
363
364Perl5 access to Berkeley DB version 1.x
365
366=item Devel::SelfStubber
367
368Generate stubs for a SelfLoading module
369
370=item Digest
371
372Modules that calculate message digests
373
374=item DirHandle
375
376Supply object methods for directory handles
377
378=item Dumpvalue
379
380Provides screen dump of Perl data.
381
382=item Encode
383
384Character encodings
385
386=item English
387
388Use nice English (or awk) names for ugly punctuation variables
389
390=item Env
391
392Perl module that imports environment variables as scalars or arrays
393
394=item Errno
395
396System errno constants
397
398=item Exporter
399
400Implements default import method for modules
401
402=item Exporter::Heavy
403
404Exporter guts
405
406=item ExtUtils::Command
407
408Utilities to replace common UNIX commands in Makefiles etc.
409
410=item ExtUtils::Command::MM
411
412Commands for the MM's to use in Makefiles
413
414=item ExtUtils::Constant
415
416Generate XS code to import C header constants
417
418=item ExtUtils::Embed
419
420Utilities for embedding Perl in C/C++ applications
421
422=item ExtUtils::Install
423
424Install files from here to there
425
426=item ExtUtils::Installed
427
428Inventory management of installed modules
429
430=item ExtUtils::Liblist
431
432Determine libraries to use and how to use them
433
434=item ExtUtils::MM
435
436OS adjusted ExtUtils::MakeMaker subclass
437
438=item ExtUtils::MM_Any
439
440Platform agnostic MM methods
441
442=item ExtUtils::MM_BeOS
443
444Methods to override UN*X behaviour in ExtUtils::MakeMaker
445
446=item ExtUtils::MM_Cygwin
447
448Methods to override UN*X behaviour in ExtUtils::MakeMaker
449
450=item ExtUtils::MM_DOS
451
452DOS specific subclass of ExtUtils::MM_Unix
453
454=item ExtUtils::MM_MacOS
455
456Methods to override UN*X behaviour in ExtUtils::MakeMaker
457
458=item ExtUtils::MM_NW5
459
460Methods to override UN*X behaviour in ExtUtils::MakeMaker
461
462=item ExtUtils::MM_OS2
463
464Methods to override UN*X behaviour in ExtUtils::MakeMaker
465
466=item ExtUtils::MM_UWIN
467
468U/WIN specific subclass of ExtUtils::MM_Unix
469
470=item ExtUtils::MM_Unix
471
472Methods used by ExtUtils::MakeMaker
473
474=item ExtUtils::MM_VMS
475
476Methods to override UN*X behaviour in ExtUtils::MakeMaker
477
478=item ExtUtils::MM_Win32
479
480Methods to override UN*X behaviour in ExtUtils::MakeMaker
481
482=item ExtUtils::MM_Win95
483
484Method to customize MakeMaker for Win9X
485
486=item ExtUtils::MY
487
488ExtUtils::MakeMaker subclass for customization
489
490=item ExtUtils::MakeMaker
491
492Create an extension Makefile
493
494=item ExtUtils::Manifest
495
496Utilities to write and check a MANIFEST file
497
498=item ExtUtils::Mkbootstrap
499
500Make a bootstrap file for use by DynaLoader
501
502=item ExtUtils::Mksymlists
503
504Write linker options files for dynamic extension
505
506=item ExtUtils::Packlist
507
508Manage .packlist files
509
510=item ExtUtils::testlib
511
512Add blib/* directories to @INC
513
514=item Fatal
515
516Replace functions with equivalents which succeed or die
517
518=item Fcntl
519
520Load the C Fcntl.h defines
521
522=item File::Basename
523
524Split a pathname into pieces
525
526=item File::CheckTree
527
528Run many filetest checks on a tree
529
530=item File::Compare
531
532Compare files or filehandles
533
534=item File::Copy
535
536Copy files or filehandles
537
538=item File::DosGlob
539
540DOS like globbing and then some
541
542=item File::Find
543
544Traverse a directory tree.
545
546=item File::Path
547
548Create or remove directory trees
549
550=item File::Spec
551
552Portably perform operations on file names
553
554=item File::Spec::Cygwin
555
556Methods for Cygwin file specs
557
558=item File::Spec::Epoc
559
560Methods for Epoc file specs
561
562=item File::Spec::Functions
563
564Portably perform operations on file names
565
566=item File::Spec::Mac
567
568File::Spec for Mac OS (Classic)
569
570=item File::Spec::OS2
571
572Methods for OS/2 file specs
573
574=item File::Spec::Unix
575
576File::Spec for Unix, base for other File::Spec modules
577
578=item File::Spec::VMS
579
580Methods for VMS file specs
581
582=item File::Spec::Win32
583
584Methods for Win32 file specs
585
586=item File::Temp
587
588Return name and handle of a temporary file safely
589
590=item File::stat
591
592By-name interface to Perl's built-in stat() functions
593
594=item FileCache
595
596Keep more files open than the system permits
597
598=item FileHandle
599
600Supply object methods for filehandles
601
602=item Filter::Simple
603
604Simplified source filtering
605
606=item FindBin
607
608Locate directory of original perl script
609
610=item Getopt::Long
611
612Extended processing of command line options
613
614=item Getopt::Std
615
616Process single-character switches with switch clustering
617
618=item Hash::Util
619
620A selection of general-utility hash subroutines
621
622=item I18N::Collate
623
624Compare 8-bit scalar data according to the current locale
625
626=item I18N::LangTags
627
628Functions for dealing with RFC3066-style language tags
629
630=item I18N::LangTags::List
631
632Tags and names for human languages
633
634=item IO
635
636Load various IO modules
637
638=item IPC::Open2
639
640Open a process for both reading and writing
641
642=item IPC::Open3
643
644Open a process for reading, writing, and error handling
645
646=item Locale::Constants
647
648Constants for Locale codes
649
650=item Locale::Country
651
652ISO codes for country identification (ISO 3166)
653
654=item Locale::Currency
655
656ISO three letter codes for currency identification (ISO 4217)
657
658=item Locale::Language
659
660ISO two letter codes for language identification (ISO 639)
661
662=item Locale::Maketext
663
664Framework for localization
665
666=item Locale::Maketext::TPJ13
667
668Article about software localization
669
670=item Locale::Script
671
672ISO codes for script identification (ISO 15924)
673
674=item Math::BigFloat
675
676Arbitrary size floating point math package
677
678=item Math::BigInt
679
680Arbitrary size integer math package
681
682=item Math::BigInt::Calc
683
684Pure Perl module to support Math::BigInt
685
686=item Math::BigRat
687
688Arbitrarily big rationals
689
690=item Math::Complex
691
692Complex numbers and associated mathematical functions
693
694=item Math::Trig
695
696Trigonometric functions
697
698=item Memoize
699
700Make functions faster by trading space for time
701
702=item Memoize::AnyDBM_File
703
704Glue to provide EXISTS for AnyDBM_File for Storable use
705
706=item Memoize::Expire
707
708Plug-in module for automatic expiration of memoized values
709
710=item Memoize::ExpireFile
711
712Test for Memoize expiration semantics
713
714=item Memoize::ExpireTest
715
716Test for Memoize expiration semantics
717
718=item Memoize::NDBM_File
719
720Glue to provide EXISTS for NDBM_File for Storable use
721
722=item Memoize::SDBM_File
723
724Glue to provide EXISTS for SDBM_File for Storable use
725
726=item Memoize::Storable
727
728Store Memoized data in Storable database
729
730=item NDBM_File
731
732Tied access to ndbm files
733
734=item NEXT
735
736Provide a pseudo-class NEXT that allows method redispatch
737
738=item Net::Cmd
739
740Network Command class (as used by FTP, SMTP etc)
741
742=item Net::Config
743
744Local configuration data for libnet
745
746=item Net::Domain
747
748Attempt to evaluate the current host's internet name and domain
749
750=item Net::FTP
751
752FTP Client class
753
754=item Net::NNTP
755
756NNTP Client class
757
758=item Net::Netrc
759
760OO interface to users netrc file
761
762=item Net::POP3
763
764Post Office Protocol 3 Client class (RFC1939)
765
766=item Net::Ping
767
768Check a remote host for reachability
769
770=item Net::SMTP
771
772Simple Mail Transfer Protocol Client
773
774=item Net::Time
775
776Time and daytime network client interface
777
778=item Net::hostent
779
780By-name interface to Perl's built-in gethost*() functions
781
782=item Net::libnetFAQ
783
784Libnet Frequently Asked Questions
785
786=item Net::netent
787
788By-name interface to Perl's built-in getnet*() functions
789
790=item Net::protoent
791
792By-name interface to Perl's built-in getproto*() functions
793
794=item Net::servent
795
796By-name interface to Perl's built-in getserv*() functions
797
798=item O
799
800Generic interface to Perl Compiler backends
801
802=item ODBM_File
803
804Tied access to odbm files
805
806=item Opcode
807
808Disable named opcodes when compiling perl code
809
810=item POSIX
811
812Perl interface to IEEE Std 1003.1
813
814=item PerlIO
815
816On demand loader for PerlIO layers and root of PerlIO::* name space
817
818=item PerlIO::via::QuotedPrint
819
820PerlIO layer for quoted-printable strings
821
822=item Pod::Checker
823
824Check pod documents for syntax errors
825
826=item Pod::Find
827
828Find POD documents in directory trees
829
830=item Pod::Functions
831
832Group Perl's functions a la perlfunc.pod
833
834=item Pod::Html
835
836Module to convert pod files to HTML
837
838=item Pod::InputObjects
839
840Objects representing POD input paragraphs, commands, etc.
841
842=item Pod::LaTeX
843
844Convert Pod data to formatted Latex
845
846=item Pod::Man
847
848Convert POD data to formatted *roff input
849
850=item Pod::ParseLink
851
852Parse an LE<lt>E<gt> formatting code in POD text
853
854=item Pod::ParseUtils
855
856Helpers for POD parsing and conversion
857
858=item Pod::Parser
859
860Base class for creating POD filters and translators
861
862=item Pod::Plainer
863
864Perl extension for converting Pod to old style Pod.
865
866=item Pod::Select
867
868Extract selected sections of POD from input
869
870=item Pod::Text
871
872Convert POD data to formatted ASCII text
873
874=item Pod::Text::Color
875
876Convert POD data to formatted color ASCII text
877
878=item Pod::Text::Overstrike
879
880Convert POD data to formatted overstrike text
881
882=item Pod::Text::Termcap
883
884Convert POD data to ASCII text with format escapes
885
886=item Pod::Usage
887
888Print a usage message from embedded pod documentation
889
890=item SDBM_File
891
892Tied access to sdbm files
893
894=item Safe
895
896Compile and execute code in restricted compartments
897
898=item Search::Dict
899
900Search for key in dictionary file
901
902=item SelectSaver
903
904Save and restore selected file handle
905
906=item SelfLoader
907
908Load functions only on demand
909
910=item Shell
911
912Run shell commands transparently within perl
913
914=item Socket
915
916Load the C socket.h defines and structure manipulators
917
918=item Storable
919
920Persistence for Perl data structures
921
922=item Switch
923
924A switch statement for Perl
925
926=item Symbol
927
928Manipulate Perl symbols and their names
929
930=item Term::ANSIColor
931
932Color screen output using ANSI escape sequences
933
934=item Term::Cap
935
936Perl termcap interface
937
938=item Term::Complete
939
940Perl word completion module
941
942=item Term::ReadLine
943
944Perl interface to various C<readline> packages. If
945
946=item Test
947
948Provides a simple framework for writing test scripts
949
950=item Test::Builder
951
952Backend for building test libraries
953
954=item Test::Harness
955
956Run perl standard test scripts with statistics
957
958=item Test::Harness::Assert
959
960Simple assert
961
962=item Test::Harness::Iterator
963
964Internal Test::Harness Iterator
965
966=item Test::Harness::Straps
967
968Detailed analysis of test results
969
970=item Test::More
971
972Yet another framework for writing test scripts
973
974=item Test::Simple
975
976Basic utilities for writing tests.
977
978=item Test::Tutorial
979
980A tutorial about writing really basic tests
981
982=item Text::Abbrev
983
984Create an abbreviation table from a list
985
986=item Text::Balanced
987
988Extract delimited text sequences from strings.
989
990=item Text::ParseWords
991
992Parse text into an array of tokens or array of arrays
993
994=item Text::Soundex
995
996Implementation of the Soundex Algorithm as Described by Knuth
997
998=item Text::Tabs
999
1000Expand and unexpand tabs per the unix expand(1) and unexpand(1)
1001
1002=item Text::Wrap
1003
1004Line wrapping to form simple paragraphs
1005
1006=item Thread
1007
1008Manipulate threads in Perl (for old code only)
1009
1010=item Thread::Queue
1011
1012Thread-safe queues
1013
1014=item Thread::Semaphore
1015
1016Thread-safe semaphores
1017
1018=item Tie::Array
1019
1020Base class for tied arrays
1021
1022=item Tie::File
1023
1024Access the lines of a disk file via a Perl array
1025
1026=item Tie::Handle
1027
1028Base class definitions for tied handles
1029
1030=item Tie::Hash
1031
1032Base class definitions for tied hashes
1033
1034=item Tie::Memoize
1035
1036Add data to hash when needed
1037
1038=item Tie::RefHash
1039
1040Use references as hash keys
1041
1042=item Tie::Scalar
1043
1044Base class definitions for tied scalars
1045
1046=item Tie::SubstrHash
1047
1048Fixed-table-size, fixed-key-length hashing
1049
1050=item Time::Local
1051
1052Efficiently compute time from local and GMT time
1053
1054=item Time::gmtime
1055
1056By-name interface to Perl's built-in gmtime() function
1057
1058=item Time::localtime
1059
1060By-name interface to Perl's built-in localtime() function
1061
1062=item Time::tm
1063
1064Internal object used by Time::gmtime and Time::localtime
1065
1066=item UNIVERSAL
1067
1068Base class for ALL classes (blessed references)
1069
1070=item Unicode::Collate
1071
1072Unicode Collation Algorithm
1073
1074=item Unicode::UCD
1075
1076Unicode character database
1077
1078=item User::grent
1079
1080By-name interface to Perl's built-in getgr*() functions
1081
1082=item User::pwent
1083
1084By-name interface to Perl's built-in getpw*() functions
1085
1086=item Win32
1087
1088Interfaces to some Win32 API Functions
1089
1090=back
1091
1092To find out I<all> modules installed on your system, including
1093those without documentation or outside the standard release,
1094just do this:
1095
1096 % find `perl -e 'print "@INC"'` -name '*.pm' -print
1097
1098They should all have their own documentation installed and accessible
1099via your system man(1) command. If you do not have a B<find>
1100program, you can use the Perl B<find2perl> program instead, which
1101generates Perl code as output you can run through perl. If you
1102have a B<man> program but it doesn't find your modules, you'll have
1103to fix your manpath. See L<perl> for details. If you have no
1104system B<man> command, you might try the B<perldoc> program.
1105
1106=head2 Extension Modules
1107
1108Extension modules are written in C (or a mix of Perl and C). They
1109are usually dynamically loaded into Perl if and when you need them,
1110but may also be linked in statically. Supported extension modules
1111include Socket, Fcntl, and POSIX.
1112
1113Many popular C extension modules do not come bundled (at least, not
1114completely) due to their sizes, volatility, or simply lack of time
1115for adequate testing and configuration across the multitude of
1116platforms on which Perl was beta-tested. You are encouraged to
1117look for them on CPAN (described below), or using web search engines
1118like Alta Vista or Deja News.
1119
1120=head1 CPAN
1121
1122CPAN stands for Comprehensive Perl Archive Network; it's a globally
1123replicated trove of Perl materials, including documentation, style
1124guides, tricks and traps, alternate ports to non-Unix systems and
1125occasional binary distributions for these. Search engines for
1126CPAN can be found at http://www.cpan.org/
1127
1128Most importantly, CPAN includes around a thousand unbundled modules,
1129some of which require a C compiler to build. Major categories of
1130modules are:
1131
1132=over
1133
1134=item *
1135
1136Language Extensions and Documentation Tools
1137
1138=item *
1139
1140Development Support
1141
1142=item *
1143
1144Operating System Interfaces
1145
1146=item *
1147
1148Networking, Device Control (modems) and InterProcess Communication
1149
1150=item *
1151
1152Data Types and Data Type Utilities
1153
1154=item *
1155
1156Database Interfaces
1157
1158=item *
1159
1160User Interfaces
1161
1162=item *
1163
1164Interfaces to / Emulations of Other Programming Languages
1165
1166=item *
1167
1168File Names, File Systems and File Locking (see also File Handles)
1169
1170=item *
1171
1172String Processing, Language Text Processing, Parsing, and Searching
1173
1174=item *
1175
1176Option, Argument, Parameter, and Configuration File Processing
1177
1178=item *
1179
1180Internationalization and Locale
1181
1182=item *
1183
1184Authentication, Security, and Encryption
1185
1186=item *
1187
1188World Wide Web, HTML, HTTP, CGI, MIME
1189
1190=item *
1191
1192Server and Daemon Utilities
1193
1194=item *
1195
1196Archiving and Compression
1197
1198=item *
1199
1200Images, Pixmap and Bitmap Manipulation, Drawing, and Graphing
1201
1202=item *
1203
1204Mail and Usenet News
1205
1206=item *
1207
1208Control Flow Utilities (callbacks and exceptions etc)
1209
1210=item *
1211
1212File Handle and Input/Output Stream Utilities
1213
1214=item *
1215
1216Miscellaneous Modules
1217
1218=back
1219
1220The list of the registered CPAN sites as of this writing follows.
1221Please note that the sorting order is alphabetical on fields:
1222
1223Continent
1224 |
1225 |-->Country
1226 |
1227 |-->[state/province]
1228 |
1229 |-->ftp
1230 |
1231 |-->[http]
1232
1233and thus the North American servers happen to be listed between the
1234European and the South American sites.
1235
1236You should try to choose one close to you.
1237
1238=head2 Africa
1239
1240=over 4
1241
1242=item South Africa
1243
1244 ftp://ftp.is.co.za/programming/perl/CPAN/
1245 ftp://ftp.mweb.co.za/pub/mirrors/cpan/
1246 ftp://ftp.saix.net/pub/CPAN/
1247 ftp://ftp.sun.ac.za/CPAN/CPAN/
1248
1249=back
1250
1251=head2 Asia
1252
1253=over 4
1254
1255=item China
1256
1257 ftp://freesoft.cei.gov.cn/pub/languages/perl/CPAN/
1258 http://www2.linuxforum.net/mirror/CPAN/
1259 http://cpan.shellhung.org/
1260 ftp://ftp.shellhung.org/pub/CPAN
1261
1262=item India
1263
1264 http://cpan.in.freeos.com
1265 ftp://cpan.in.freeos.com/pub/CPAN/
1266
1267=item Indonesia
1268
1269 http://cpan.itb.web.id/
1270 ftp://mirrors.piksi.itb.ac.id/CPAN/
1271 http://cpan.cbn.net.id/
1272 ftp://ftp.cbn.net.id/mirror/CPAN
1273 http://CPAN.mweb.co.id/
1274 ftp://ftp.mweb.co.id/pub/languages/perl/CPAN/
1275
1276=item Israel
1277
1278 http://www.iglu.org.il:/pub/CPAN/
1279 ftp://ftp.iglu.org.il/pub/CPAN/
1280 http://cpan.lerner.co.il/
1281 http://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/
1282 ftp://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/
1283
1284=item Japan
1285
1286 ftp://ftp.u-aizu.ac.jp/pub/CPAN
1287 ftp://ftp.kddlabs.co.jp/CPAN/
1288 http://mirror.nucba.ac.jp/mirror/Perl/
1289 ftp://mirror.nucba.ac.jp/mirror/Perl/
1290 ftp://ftp.meisei-u.ac.jp/pub/CPAN/
1291 ftp://ftp.ayamura.org/pub/CPAN/
1292 ftp://ftp.jaist.ac.jp/pub/lang/perl/CPAN/
1293 ftp://ftp.dti.ad.jp/pub/lang/CPAN/
1294 ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/
1295
1296=item Korea
1297
1298 http://mirror.Mazic.org/pub/CPAN
1299 ftp://mirror.Mazic.org/pub/CPAN
1300
1301=item Philippines
1302
1303 http://www.adzu.edu.ph/CPAN
1304
1305=item Russian Federation
1306
1307 http://cpan.tomsk.ru
1308 ftp://cpan.tomsk.ru/pub/CPAN
1309
1310=item Saudi Arabia
1311
1312 ftp://ftp.isu.net.sa/pub/CPAN/
1313
1314=item Singapore
1315
1316 http://cpan.hjc.edu.sg
1317 http://mirror.averse.net/pub/CPAN
1318 ftp://mirror.averse.net/pub/CPAN
1319
1320=item South Korea
1321
1322 http://CPAN.bora.net/
1323 ftp://ftp.bora.net/pub/CPAN/
1324 http://ftp.kornet.net/pub/CPAN/
1325 ftp://ftp.kornet.net/pub/CPAN/
1326 ftp://ftp.nuri.net/pub/CPAN/
1327 http://ftp.xgate.co.kr/cpan/
1328 ftp://ftp.xgate.co.kr/pub/mirror/CPAN
1329
1330=item Taiwan
1331
1332 ftp://ftp.nctu.edu.tw/UNIX/perl/CPAN
1333 ftp://ftp.ee.ncku.edu.tw/pub/perl/CPAN/
1334 ftp://ftp1.sinica.edu.tw/pub1/perl/CPAN/
1335 http://ftp.tku.edu.tw/pub/CPAN/
1336 ftp://ftp.tku.edu.tw/pub/CPAN/
1337
1338=item Thailand
1339
1340 ftp://ftp.loxinfo.co.th/pub/cpan/
1341 ftp://ftp.cs.riubon.ac.th/pub/mirrors/CPAN/
1342
1343=back
1344
1345=head2 Central America
1346
1347=over 4
1348
1349=item Costa Rica
1350
1351 ftp://ftp.linux.co.cr/mirrors/CPAN/
1352 http://ftp.ucr.ac.cr/Unix/CPAN/
1353 ftp://ftp.ucr.ac.cr/pub/Unix/CPAN/
1354
1355=back
1356
1357=head2 Europe
1358
1359=over 4
1360
1361=item Austria
1362
1363 ftp://ftp.tuwien.ac.at/pub/CPAN/
1364
1365=item Belgium
1366
1367 http://ftp.easynet.be/pub/CPAN/
1368 ftp://ftp.easynet.be/pub/CPAN/
1369 http://cpan.skynet.be
1370 ftp://ftp.skynet.be/pub/CPAN
1371 ftp://ftp.kulnet.kuleuven.ac.be/pub/mirror/CPAN/
1372
1373=item Bulgaria
1374
1375 http://cpan.lirex.net/
1376 ftp://ftp.lirex.net/pub/mirrors/CPAN
1377
1378=item Croatia
1379
1380 http://ftp.linux.hr/pub/CPAN/
1381 ftp://ftp.linux.hr/pub/CPAN/
1382
1383=item Czech Republic
1384
1385 http://ftp.fi.muni.cz/pub/CPAN/
1386 ftp://ftp.fi.muni.cz/pub/CPAN/
1387 ftp://sunsite.mff.cuni.cz/MIRRORS/ftp.funet.fi/pub/languages/perl/CPAN/
1388
1389=item Denmark
1390
1391 http://mirrors.sunsite.dk/cpan/
1392 ftp://sunsite.dk/mirrors/cpan/
1393 http://cpan.cybercity.dk
1394 http://www.cpan.dk/CPAN/
1395 ftp://www.cpan.dk/ftp.cpan.org/CPAN/
1396
1397=item Estonia
1398
1399 ftp://ftp.ut.ee/pub/languages/perl/CPAN/
1400
1401=item Finland
1402
1403 ftp://ftp.funet.fi/pub/languages/perl/CPAN/
1404 http://cpan.kpnqwest.fi/
1405
1406=item France
1407
1408 http://ftp.u-paris10.fr/perl/CPAN
1409 ftp://ftp.u-paris10.fr/perl/CPAN
1410 http://cpan.mirrors.easynet.fr/
1411 ftp://cpan.mirrors.easynet.fr/pub/ftp.cpan.org/
1412 ftp://ftp.club-internet.fr/pub/perl/CPAN/
1413 http://fr.cpan.org/
1414 ftp://ftp.lip6.fr/pub/perl/CPAN/
1415 ftp://ftp.oleane.net/pub/mirrors/CPAN/
1416 ftp://ftp.pasteur.fr/pub/computing/CPAN/
1417 http://mir2.ovh.net/ftp.cpan.org
1418 ftp://mir1.ovh.net/ftp.cpan.org
1419 http://ftp.u-strasbg.fr/CPAN
1420 ftp://ftp.u-strasbg.fr/CPAN
1421 http://cpan.cict.fr/
1422 ftp://cpan.cict.fr/pub/CPAN/
1423 ftp://ftp.uvsq.fr/pub/perl/CPAN/
1424
1425=item Germany
1426
1427 ftp://ftp.rz.ruhr-uni-bochum.de/pub/CPAN/
1428 ftp://ftp.freenet.de/pub/ftp.cpan.org/pub/CPAN/
1429 ftp://ftp.uni-erlangen.de/pub/source/CPAN/
1430 ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/CPAN
1431 http://pandemonium.tiscali.de/pub/CPAN/
1432 ftp://pandemonium.tiscali.de/pub/CPAN/
1433 http://ftp.gwdg.de/pub/languages/perl/CPAN/
1434 ftp://ftp.gwdg.de/pub/languages/perl/CPAN/
1435 ftp://ftp.uni-hamburg.de/pub/soft/lang/perl/CPAN/
1436 ftp://ftp.leo.org/pub/CPAN/
1437 http://cpan.noris.de/
1438 ftp://cpan.noris.de/pub/CPAN/
1439 ftp://ftp.mpi-sb.mpg.de/pub/perl/CPAN/
1440 ftp://ftp.gmd.de/mirrors/CPAN/
1441
1442=item Greece
1443
1444 ftp://ftp.acn.gr/pub/lang/perl/CPAN
1445 ftp://ftp.forthnet.gr/pub/languages/perl/CPAN
1446 ftp://ftp.ntua.gr/pub/lang/perl/
1447
1448=item Hungary
1449
1450 http://cpan.artifact.hu/
1451 ftp://cpan.artifact.hu/CPAN/
1452 http://ftp.kfki.hu/packages/perl/CPAN/
1453 ftp://ftp.kfki.hu/pub/packages/perl/CPAN/
1454
1455=item Iceland
1456
1457 http://ftp.rhnet.is/pub/CPAN/
1458 ftp://ftp.rhnet.is/pub/CPAN/
1459
1460=item Ireland
1461
1462 http://cpan.indigo.ie/
1463 ftp://cpan.indigo.ie/pub/CPAN/
1464 http://sunsite.compapp.dcu.ie/pub/perl/
1465 ftp://sunsite.compapp.dcu.ie/pub/perl/
1466
1467=item Italy
1468
1469 http://cpan.nettuno.it/
1470 http://gusp.dyndns.org/CPAN/
1471 ftp://gusp.dyndns.org/pub/CPAN
1472 http://softcity.iol.it/cpan
1473 ftp://softcity.iol.it/pub/cpan
1474 ftp://ftp.unina.it/pub/Other/CPAN/CPAN/
1475 ftp://ftp.unipi.it/pub/mirror/perl/CPAN/
1476 ftp://cis.uniRoma2.it/CPAN/
1477 ftp://ftp.edisontel.it/pub/CPAN_Mirror/
1478 ftp://ftp.flashnet.it/pub/CPAN/
1479
1480=item Latvia
1481
1482 http://kvin.lv/pub/CPAN/
1483
1484=item Lithuania
1485
1486 ftp://ftp.unix.lt/pub/CPAN/
1487
1488=item Netherlands
1489
1490 ftp://download.xs4all.nl/pub/mirror/CPAN/
1491 ftp://ftp.nl.uu.net/pub/CPAN/
1492 ftp://ftp.nluug.nl/pub/languages/perl/CPAN/
1493 http://cpan.cybercomm.nl/
1494 ftp://mirror.cybercomm.nl/pub/CPAN
1495 ftp://ftp.cpan.nl/pub/CPAN/
1496 http://ftp.easynet.nl/mirror/CPAN
1497 ftp://ftp.easynet.nl/mirror/CPAN
1498 http://archive.cs.uu.nl/mirror/CPAN/
1499 ftp://ftp.cs.uu.nl/mirror/CPAN/
1500
1501=item Norway
1502
1503 ftp://ftp.uninett.no/pub/languages/perl/CPAN
1504 ftp://ftp.uit.no/pub/languages/perl/cpan/
1505
1506=item Poland
1507
1508 ftp://ftp.pk.edu.pl/pub/lang/perl/CPAN/
1509 ftp://ftp.mega.net.pl/pub/mirrors/ftp.perl.com/
1510 ftp://ftp.man.torun.pl/pub/doc/CPAN/
1511 ftp://sunsite.icm.edu.pl/pub/CPAN/
1512
1513=item Portugal
1514
1515 ftp://ftp.ua.pt/pub/CPAN/
1516 ftp://perl.di.uminho.pt/pub/CPAN/
1517 http://cpan.dei.uc.pt/
1518 ftp://ftp.dei.uc.pt/pub/CPAN
1519 ftp://ftp.ist.utl.pt/pub/CPAN/
1520 http://cpan.ip.pt/
1521 ftp://cpan.ip.pt/pub/cpan/
1522 ftp://ftp.netc.pt/pub/CPAN/
1523 ftp://ftp.up.pt/pub/CPAN
1524
1525=item Romania
1526
1527 ftp://ftp.kappa.ro/pub/mirrors/ftp.perl.org/pub/CPAN/
1528 ftp://ftp.dntis.ro/pub/cpan/
1529 ftp://ftp.dnttm.ro/pub/CPAN/
1530 ftp://ftp.lasting.ro/pub/CPAN
1531 ftp://ftp.timisoara.roedu.net/mirrors/CPAN/
1532
1533=item Russia
1534
1535 ftp://ftp.chg.ru/pub/lang/perl/CPAN/
1536 http://cpan.rinet.ru/
1537 ftp://cpan.rinet.ru/pub/mirror/CPAN/
1538 ftp://ftp.aha.ru/pub/CPAN/
1539 http://cpan.sai.msu.ru/
1540 ftp://ftp.sai.msu.su/pub/lang/perl/CPAN/
1541
1542=item Slovakia
1543
1544 http://ftp.cvt.stuba.sk/pub/CPAN/
1545 ftp://ftp.cvt.stuba.sk/pub/CPAN/
1546
1547=item Slovenia
1548
1549 ftp://ftp.arnes.si/software/perl/CPAN/
1550
1551=item Spain
1552
1553 http://cpan.imasd.elmundo.es/
1554 ftp://ftp.rediris.es/mirror/CPAN/
1555 ftp://ftp.etse.urv.es/pub/perl/
1556
1557=item Sweden
1558
1559 http://ftp.du.se/CPAN/
1560 ftp://ftp.du.se/pub/CPAN/
1561 ftp://mirror.dataphone.se/pub/CPAN
1562 ftp://ftp.sunet.se/pub/lang/perl/CPAN/
1563
1564=item Switzerland
1565
1566 ftp://ftp.danyk.ch/CPAN/
1567 ftp://sunsite.cnlab-switch.ch/mirror/CPAN/
1568
1569=item Turkey
1570
1571 http://ftp.ulak.net.tr/perl/CPAN/
1572 ftp://ftp.ulak.net.tr/perl/CPAN
1573 ftp://sunsite.bilkent.edu.tr/pub/languages/CPAN/
1574
1575=item Ukraine
1576
1577 http://cpan.org.ua/
1578 ftp://cpan.org.ua/
1579 ftp://ftp.perl.org.ua/pub/CPAN/
1580
1581=item United Kingdom
1582
1583 http://www.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN
1584 ftp://ftp.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN/
1585 http://cpan.teleglobe.net/
1586 ftp://cpan.teleglobe.net/pub/CPAN
1587 http://cpan.crazygreek.co.uk
1588 ftp://ftp.demon.co.uk/pub/CPAN/
1589 http://cpan.m.flirble.org/
1590 ftp://ftp.flirble.org/pub/languages/perl/CPAN/
1591 ftp://ftp.plig.org/pub/CPAN/
1592 http://mirror.uklinux.net/CPAN/
1593 ftp://mirror.uklinux.net/pub/CPAN/
1594 http://cpan.mirrors.clockerz.net/
1595 ftp://ftp.clockerz.net/pub/CPAN/
1596 ftp://usit.shef.ac.uk/pub/packages/CPAN/
1597
1598=back
1599
1600=head2 North America
1601
1602=over 4
1603
1604=item Alberta
1605
1606 http://sunsite.ualberta.ca/pub/Mirror/CPAN/
1607 ftp://sunsite.ualberta.ca/pub/Mirror/CPAN/
1608
1609=item Manitoba
1610
1611 http://theoryx5.uwinnipeg.ca/pub/CPAN/
1612 ftp://theoryx5.uwinnipeg.ca/pub/CPAN/
1613
1614=item Nova Scotia
1615
1616 ftp://cpan.chebucto.ns.ca/pub/CPAN/
1617
1618=item Ontario
1619
1620 ftp://ftp.crc.ca/pub/CPAN/
1621
1622=item Quebec
1623
1624 http://cpan.mirror.smartworker.org/
1625
1626=item Mexico
1627
1628 http://cpan.azc.uam.mx
1629 ftp://cpan.azc.uam.mx/mirrors/CPAN
1630 http://cpan.unam.mx/
1631 ftp://cpan.unam.mx/pub/CPAN
1632 http://www.msg.com.mx/CPAN/
1633 ftp://ftp.msg.com.mx/pub/CPAN/
1634
1635=back
1636
1637=head2 United States
1638
1639=over 4
1640
1641=item Alabama
1642
1643 http://mirror.hiwaay.net/CPAN/
1644 ftp://mirror.hiwaay.net/CPAN/
1645
1646=item California
1647
1648 http://cpan.develooper.com/
1649 http://www.cpan.org/
1650 ftp://cpan.valueclick.com/pub/CPAN/
1651 http://mirrors.gossamer-threads.com/CPAN
1652 ftp://cpan.nas.nasa.gov/pub/perl/CPAN/
1653 http://mirrors.kernel.org/cpan/
1654 ftp://mirrors.kernel.org/pub/CPAN
1655 http://cpan.digisle.net/
1656 ftp://cpan.digisle.net/pub/CPAN
1657 http://www.perl.com/CPAN/
1658 http://download.sourceforge.net/mirrors/CPAN/
1659
1660=item Colorado
1661
1662 ftp://ftp.cs.colorado.edu/pub/perl/CPAN/
1663
1664=item Delaware
1665
1666 http://ftp.lug.udel.edu/pub/CPAN
1667 ftp://ftp.lug.udel.edu/pub/CPAN
1668
1669=item District of Columbia
1670
1671 ftp://ftp.dc.aleron.net/pub/CPAN/
1672
1673=item Florida
1674
1675 ftp://ftp.cise.ufl.edu/pub/mirrors/CPAN/
1676 http://mirror.csit.fsu.edu/pub/CPAN/
1677 ftp://mirror.csit.fsu.edu/pub/CPAN/
1678 http://cpan.mirrors.nks.net/
1679
1680=item Illinois
1681
1682 http://uiarchive.uiuc.edu/mirrors/ftp/cpan.cse.msu.edu/
1683 ftp://uiarchive.uiuc.edu/mirrors/ftp/cpan.cse.msu.edu/
1684
1685=item Indiana
1686
1687 ftp://ftp.uwsg.iu.edu/pub/perl/CPAN/
1688 http://cpan.netnitco.net/
1689 ftp://cpan.netnitco.net/pub/mirrors/CPAN/
1690 http://archive.progeny.com/CPAN/
1691 ftp://archive.progeny.com/CPAN/
1692 ftp://cpan.in-span.net/
1693 http://csociety-ftp.ecn.purdue.edu/pub/CPAN
1694 ftp://csociety-ftp.ecn.purdue.edu/pub/CPAN
1695
1696=item Kentucky
1697
1698 http://cpan.uky.edu/
1699 ftp://cpan.uky.edu/pub/CPAN/
1700
1701=item Massachusetts
1702
1703 ftp://ftp.ccs.neu.edu/net/mirrors/ftp.funet.fi/pub/languages/perl/CPAN/
1704 http://cpan.mirrors.netnumina.com/
1705 ftp://mirrors.netnumina.com/cpan/
1706
1707=item Michigan
1708
1709 ftp://cpan.cse.msu.edu/
1710
1711=item New Jersey
1712
1713 ftp://ftp.cpanel.net/pub/CPAN/
1714 http://cpan.teleglobe.net/
1715 ftp://cpan.teleglobe.net/pub/CPAN
1716
1717=item New York
1718
1719 ftp://ftp.exobit.org/pub/perl/CPAN
1720 http://cpan.belfry.net/
1721 http://cpan.thepirtgroup.com/
1722 ftp://cpan.thepirtgroup.com/
1723 ftp://ftp.stealth.net/pub/CPAN/
1724 http://www.rge.com/pub/languages/perl/
1725 ftp://ftp.rge.com/pub/languages/perl/
1726 ftp://mirrors.cloud9.net/pub/mirrors/CPAN/
1727
1728=item North Carolina
1729
1730 ftp://ftp.duke.edu/pub/perl/
1731
1732=item Ohio
1733
1734 ftp://ftp.loaded.net/pub/CPAN/
1735
1736=item Oklahoma
1737
1738 ftp://ftp.ou.edu/mirrors/CPAN/
1739
1740=item Oregon
1741
1742 ftp://ftp.orst.edu/pub/CPAN
1743
1744=item Pennsylvania
1745
1746 http://ftp.epix.net/CPAN/
1747 ftp://ftp.epix.net/pub/languages/perl/
1748 http://mirrors.phenominet.com/pub/CPAN/
1749 ftp://mirrors.phenominet.com/pub/CPAN/
1750 http://cpan.pair.com/
1751 ftp://cpan.pair.com/pub/CPAN/
1752 ftp://carroll.cac.psu.edu/pub/CPAN/
1753
1754=item Tennessee
1755
1756 ftp://ftp.sunsite.utk.edu/pub/CPAN/
1757
1758=item Texas
1759
1760 http://ftp.sedl.org/pub/mirrors/CPAN/
1761 ftp://mirror.telentente.com/pub/CPAN
1762
1763=item Utah
1764
1765 ftp://mirror.xmission.com/CPAN/
1766
1767=item Virginia
1768
1769 http://mirrors.rcn.net/pub/lang/CPAN/
1770 ftp://mirrors.rcn.net/pub/lang/CPAN/
1771 http://perl.secsup.org/
1772 ftp://perl.secsup.org/pub/perl/
1773 http://mirrors.phihost.com/CPAN/
1774 ftp://mirrors.phihost.com/CPAN/
1775 ftp://ruff.cs.jmu.edu/pub/CPAN/
1776 http://perl.Liquidation.com/CPAN/
1777
1778=item ashington
1779
1780 http://cpan.llarian.net/
1781 ftp://cpan.llarian.net/pub/CPAN/
1782 http://cpan.mirrorcentral.com/
1783 ftp://ftp.mirrorcentral.com/pub/CPAN/
1784 ftp://ftp-mirror.internap.com/pub/CPAN/
1785
1786=item Wisconsin
1787
1788 http://mirror.sit.wisc.edu/pub/CPAN/
1789 ftp://mirror.sit.wisc.edu/pub/CPAN/
1790
1791=back
1792
1793=head2 Oceania
1794
1795=over 4
1796
1797=item Australia
1798
1799 http://ftp.planetmirror.com/pub/CPAN/
1800 ftp://ftp.planetmirror.com/pub/CPAN/
1801 ftp://mirror.aarnet.edu.au/pub/perl/CPAN/
1802 ftp://cpan.topend.com.au/pub/CPAN/
1803
1804=item New Zealand
1805
1806 ftp://ftp.auckland.ac.nz/pub/perl/CPAN/
1807 http://cpan.soa.co.nz/CPAN/
1808
1809=back
1810
1811=head2 South America
1812
1813=over 4
1814
1815=item Argentina
1816
1817 ftp://mirrors.bannerlandia.com.ar/mirrors/CPAN/
1818 http://ftp.fcaglp.unlp.edu.ar/pub/CPAN/
1819 ftp://ftp.fcaglp.unlp.edu.ar/pub/CPAN/
1820
1821=item Brazil
1822
1823 ftp://cpan.pop-mg.com.br/pub/CPAN/
1824 ftp://ftp.matrix.com.br/pub/perl/CPAN/
1825
1826=item Chile
1827
1828 http://cpan.netglobalis.net/
1829 ftp://cpan.netglobalis.net/pub/CPAN/
1830
1831=back
1832
1833=head2 RSYNC Mirrors
1834
1835 ftp.fcaglp.unlp.edu.ar::CPAN
1836 cpan.mirror.smartworker.org::CPAN
1837 theoryx5.uwinnipeg.ca::CPAN
1838 ftp.shellhung.org::CPAN
1839 ftp.funet.fi::CPAN
1840 ftp.u-paris10.fr::CPAN
1841 mir1.ovh.net::CPAN
1842 ftp.gwdg.de::FTP/languages/perl/CPAN/
1843 ftp.leo.org::CPAN
1844 CPAN.piksi.itb.ac.id::CPAN
1845 ftp.cbn.net.id::CPAN
1846 ftp.iglu.org.il::CPAN
1847 gusp.dyndns.org::cpan
1848 ftp.kddlabs.co.jp::cpan
1849 ftp.ayamura.org::pub/CPAN/
1850 mirror.averse.net::cpan
1851 cpan.teleglobe.net::CPAN
1852 ftp.sedl.org::cpan
1853 archive.progeny.com::CPAN
1854 cpan.teleglobe.net::CPAN
1855 ftp.lug.udel.edu::cpan
1856 mirrors.kernel.org::mirrors/CPAN
1857 mirrors.phenominet.com::CPAN
1858 mirror.csit.fsu.edu::CPAN
1859 csociety-ftp.ecn.purdue.edu::CPAN
1860
1861For an up-to-date listing of CPAN sites,
1862see http://www.cpan.org/SITES or ftp://www.cpan.org/SITES .
1863
1864=head1 Modules: Creation, Use, and Abuse
1865
1866(The following section is borrowed directly from Tim Bunce's modules
1867file, available at your nearest CPAN site.)
1868
1869Perl implements a class using a package, but the presence of a
1870package doesn't imply the presence of a class. A package is just a
1871namespace. A class is a package that provides subroutines that can be
1872used as methods. A method is just a subroutine that expects, as its
1873first argument, either the name of a package (for "static" methods),
1874or a reference to something (for "virtual" methods).
1875
1876A module is a file that (by convention) provides a class of the same
1877name (sans the .pm), plus an import method in that class that can be
1878called to fetch exported symbols. This module may implement some of
1879its methods by loading dynamic C or C++ objects, but that should be
1880totally transparent to the user of the module. Likewise, the module
1881might set up an AUTOLOAD function to slurp in subroutine definitions on
1882demand, but this is also transparent. Only the F<.pm> file is required to
1883exist. See L<perlsub>, L<perltoot>, and L<AutoLoader> for details about
1884the AUTOLOAD mechanism.
1885
1886=head2 Guidelines for Module Creation
1887
1888=over 4
1889
1890=item *
1891
1892Do similar modules already exist in some form?
1893
1894If so, please try to reuse the existing modules either in whole or
1895by inheriting useful features into a new class. If this is not
1896practical try to get together with the module authors to work on
1897extending or enhancing the functionality of the existing modules.
1898A perfect example is the plethora of packages in perl4 for dealing
1899with command line options.
1900
1901If you are writing a module to expand an already existing set of
1902modules, please coordinate with the author of the package. It
1903helps if you follow the same naming scheme and module interaction
1904scheme as the original author.
1905
1906=item *
1907
1908Try to design the new module to be easy to extend and reuse.
1909
1910Try to C<use warnings;> (or C<use warnings qw(...);>).
1911Remember that you can add C<no warnings qw(...);> to individual blocks
1912of code that need less warnings.
1913
1914Use blessed references. Use the two argument form of bless to bless
1915into the class name given as the first parameter of the constructor,
1916e.g.,:
1917
1918 sub new {
1919 my $class = shift;
1920 return bless {}, $class;
1921 }
1922
1923or even this if you'd like it to be used as either a static
1924or a virtual method.
1925
1926 sub new {
1927 my $self = shift;
1928 my $class = ref($self) || $self;
1929 return bless {}, $class;
1930 }
1931
1932Pass arrays as references so more parameters can be added later
1933(it's also faster). Convert functions into methods where
1934appropriate. Split large methods into smaller more flexible ones.
1935Inherit methods from other modules if appropriate.
1936
1937Avoid class name tests like: C<die "Invalid" unless ref $ref eq 'FOO'>.
1938Generally you can delete the C<eq 'FOO'> part with no harm at all.
1939Let the objects look after themselves! Generally, avoid hard-wired
1940class names as far as possible.
1941
1942Avoid C<< $r->Class::func() >> where using C<@ISA=qw(... Class ...)> and
1943C<< $r->func() >> would work (see L<perlbot> for more details).
1944
1945Use autosplit so little used or newly added functions won't be a
1946burden to programs that don't use them. Add test functions to
1947the module after __END__ either using AutoSplit or by saying:
1948
1949 eval join('',<main::DATA>) || die $@ unless caller();
1950
1951Does your module pass the 'empty subclass' test? If you say
1952C<@SUBCLASS::ISA = qw(YOURCLASS);> your applications should be able
1953to use SUBCLASS in exactly the same way as YOURCLASS. For example,
1954does your application still work if you change: C<$obj = new YOURCLASS;>
1955into: C<$obj = new SUBCLASS;> ?
1956
1957Avoid keeping any state information in your packages. It makes it
1958difficult for multiple other packages to use yours. Keep state
1959information in objects.
1960
1961Always use B<-w>.
1962
1963Try to C<use strict;> (or C<use strict qw(...);>).
1964Remember that you can add C<no strict qw(...);> to individual blocks
1965of code that need less strictness.
1966
1967Always use B<-w>.
1968
1969Follow the guidelines in the perlstyle(1) manual.
1970
1971Always use B<-w>.
1972
1973=item *
1974
1975Some simple style guidelines
1976
1977The perlstyle manual supplied with Perl has many helpful points.
1978
1979Coding style is a matter of personal taste. Many people evolve their
1980style over several years as they learn what helps them write and
1981maintain good code. Here's one set of assorted suggestions that
1982seem to be widely used by experienced developers:
1983
1984Use underscores to separate words. It is generally easier to read
1985$var_names_like_this than $VarNamesLikeThis, especially for
1986non-native speakers of English. It's also a simple rule that works
1987consistently with VAR_NAMES_LIKE_THIS.
1988
1989Package/Module names are an exception to this rule. Perl informally
1990reserves lowercase module names for 'pragma' modules like integer
1991and strict. Other modules normally begin with a capital letter and
1992use mixed case with no underscores (need to be short and portable).
1993
1994You may find it helpful to use letter case to indicate the scope
1995or nature of a variable. For example:
1996
1997 $ALL_CAPS_HERE constants only (beware clashes with Perl vars)
1998 $Some_Caps_Here package-wide global/static
1999 $no_caps_here function scope my() or local() variables
2000
2001Function and method names seem to work best as all lowercase.
2002e.g., C<< $obj->as_string() >>.
2003
2004You can use a leading underscore to indicate that a variable or
2005function should not be used outside the package that defined it.
2006
2007=item *
2008
2009Select what to export.
2010
2011Do NOT export method names!
2012
2013Do NOT export anything else by default without a good reason!
2014
2015Exports pollute the namespace of the module user. If you must
2016export try to use @EXPORT_OK in preference to @EXPORT and avoid
2017short or common names to reduce the risk of name clashes.
2018
2019Generally anything not exported is still accessible from outside the
2020module using the ModuleName::item_name (or C<< $blessed_ref->method >>)
2021syntax. By convention you can use a leading underscore on names to
2022indicate informally that they are 'internal' and not for public use.
2023
2024(It is actually possible to get private functions by saying:
2025C<my $subref = sub { ... }; &$subref;>. But there's no way to call that
2026directly as a method, because a method must have a name in the symbol
2027table.)
2028
2029As a general rule, if the module is trying to be object oriented
2030then export nothing. If it's just a collection of functions then
2031@EXPORT_OK anything but use @EXPORT with caution.
2032
2033=item *
2034
2035Select a name for the module.
2036
2037This name should be as descriptive, accurate, and complete as
2038possible. Avoid any risk of ambiguity. Always try to use two or
2039more whole words. Generally the name should reflect what is special
2040about what the module does rather than how it does it. Please use
2041nested module names to group informally or categorize a module.
2042There should be a very good reason for a module not to have a nested name.
2043Module names should begin with a capital letter.
2044
2045Having 57 modules all called Sort will not make life easy for anyone
2046(though having 23 called Sort::Quick is only marginally better :-).
2047Imagine someone trying to install your module alongside many others.
2048If in any doubt ask for suggestions in comp.lang.perl.misc.
2049
2050If you are developing a suite of related modules/classes it's good
2051practice to use nested classes with a common prefix as this will
2052avoid namespace clashes. For example: Xyz::Control, Xyz::View,
2053Xyz::Model etc. Use the modules in this list as a naming guide.
2054
2055If adding a new module to a set, follow the original author's
2056standards for naming modules and the interface to methods in
2057those modules.
2058
2059If developing modules for private internal or project specific use,
2060that will never be released to the public, then you should ensure
2061that their names will not clash with any future public module. You
2062can do this either by using the reserved Local::* category or by
2063using a category name that includes an underscore like Foo_Corp::*.
2064
2065To be portable each component of a module name should be limited to
206611 characters. If it might be used on MS-DOS then try to ensure each is
2067unique in the first 8 characters. Nested modules make this easier.
2068
2069=item *
2070
2071Have you got it right?
2072
2073How do you know that you've made the right decisions? Have you
2074picked an interface design that will cause problems later? Have
2075you picked the most appropriate name? Do you have any questions?
2076
2077The best way to know for sure, and pick up many helpful suggestions,
2078is to ask someone who knows. Comp.lang.perl.misc is read by just about
2079all the people who develop modules and it's the best place to ask.
2080
2081All you need to do is post a short summary of the module, its
2082purpose and interfaces. A few lines on each of the main methods is
2083probably enough. (If you post the whole module it might be ignored
2084by busy people - generally the very people you want to read it!)
2085
2086Don't worry about posting if you can't say when the module will be
2087ready - just say so in the message. It might be worth inviting
2088others to help you, they may be able to complete it for you!
2089
2090=item *
2091
2092README and other Additional Files.
2093
2094It's well known that software developers usually fully document the
2095software they write. If, however, the world is in urgent need of
2096your software and there is not enough time to write the full
2097documentation please at least provide a README file containing:
2098
2099=over 10
2100
2101=item *
2102
2103A description of the module/package/extension etc.
2104
2105=item *
2106
2107A copyright notice - see below.
2108
2109=item *
2110
2111Prerequisites - what else you may need to have.
2112
2113=item *
2114
2115How to build it - possible changes to Makefile.PL etc.
2116
2117=item *
2118
2119How to install it.
2120
2121=item *
2122
2123Recent changes in this release, especially incompatibilities
2124
2125=item *
2126
2127Changes / enhancements you plan to make in the future.
2128
2129=back
2130
2131If the README file seems to be getting too large you may wish to
2132split out some of the sections into separate files: INSTALL,
2133Copying, ToDo etc.
2134
2135=over 4
2136
2137=item *
2138
2139Adding a Copyright Notice.
2140
2141How you choose to license your work is a personal decision.
2142The general mechanism is to assert your Copyright and then make
2143a declaration of how others may copy/use/modify your work.
2144
2145Perl, for example, is supplied with two types of licence: The GNU
2146GPL and The Artistic Licence (see the files README, Copying, and
2147Artistic). Larry has good reasons for NOT just using the GNU GPL.
2148
2149My personal recommendation, out of respect for Larry, Perl, and the
2150Perl community at large is to state something simply like:
2151
2152 Copyright (c) 1995 Your Name. All rights reserved.
2153 This program is free software; you can redistribute it and/or
2154 modify it under the same terms as Perl itself.
2155
2156This statement should at least appear in the README file. You may
2157also wish to include it in a Copying file and your source files.
2158Remember to include the other words in addition to the Copyright.
2159
2160=item *
2161
2162Give the module a version/issue/release number.
2163
2164To be fully compatible with the Exporter and MakeMaker modules you
2165should store your module's version number in a non-my package
2166variable called $VERSION. This should be a floating point
2167number with at least two digits after the decimal (i.e., hundredths,
2168e.g, C<$VERSION = "0.01">). Don't use a "1.3.2" style version.
2169See L<Exporter> for details.
2170
2171It may be handy to add a function or method to retrieve the number.
2172Use the number in announcements and archive file names when
2173releasing the module (ModuleName-1.02.tar.Z).
2174See perldoc ExtUtils::MakeMaker.pm for details.
2175
2176=item *
2177
2178How to release and distribute a module.
2179
2180It's good idea to post an announcement of the availability of your
2181module (or the module itself if small) to the comp.lang.perl.announce
2182Usenet newsgroup. This will at least ensure very wide once-off
2183distribution.
2184
2185If possible, register the module with CPAN. You should
2186include details of its location in your announcement.
2187
2188Some notes about ftp archives: Please use a long descriptive file
2189name that includes the version number. Most incoming directories
2190will not be readable/listable, i.e., you won't be able to see your
2191file after uploading it. Remember to send your email notification
2192message as soon as possible after uploading else your file may get
2193deleted automatically. Allow time for the file to be processed
2194and/or check the file has been processed before announcing its
2195location.
2196
2197FTP Archives for Perl Modules:
2198
2199Follow the instructions and links on:
2200
2201 http://www.cpan.org/modules/00modlist.long.html
2202 http://www.cpan.org/modules/04pause.html
2203
2204or upload to one of these sites:
2205
2206 https://pause.kbx.de/pause/
2207 http://pause.perl.org/pause/
2208
2209and notify <modules@perl.org>.
2210
2211By using the WWW interface you can ask the Upload Server to mirror
2212your modules from your ftp or WWW site into your own directory on
2213CPAN!
2214
2215Please remember to send me an updated entry for the Module list!
2216
2217=item *
2218
2219Take care when changing a released module.
2220
2221Always strive to remain compatible with previous released versions.
2222Otherwise try to add a mechanism to revert to the
2223old behavior if people rely on it. Document incompatible changes.
2224
2225=back
2226
2227=back
2228
2229=head2 Guidelines for Converting Perl 4 Library Scripts into Modules
2230
2231=over 4
2232
2233=item *
2234
2235There is no requirement to convert anything.
2236
2237If it ain't broke, don't fix it! Perl 4 library scripts should
2238continue to work with no problems. You may need to make some minor
2239changes (like escaping non-array @'s in double quoted strings) but
2240there is no need to convert a .pl file into a Module for just that.
2241
2242=item *
2243
2244Consider the implications.
2245
2246All Perl applications that make use of the script will need to
2247be changed (slightly) if the script is converted into a module. Is
2248it worth it unless you plan to make other changes at the same time?
2249
2250=item *
2251
2252Make the most of the opportunity.
2253
2254If you are going to convert the script to a module you can use the
2255opportunity to redesign the interface. The guidelines for module
2256creation above include many of the issues you should consider.
2257
2258=item *
2259
2260The pl2pm utility will get you started.
2261
2262This utility will read *.pl files (given as parameters) and write
2263corresponding *.pm files. The pl2pm utilities does the following:
2264
2265=over 10
2266
2267=item *
2268
2269Adds the standard Module prologue lines
2270
2271=item *
2272
2273Converts package specifiers from ' to ::
2274
2275=item *
2276
2277Converts die(...) to croak(...)
2278
2279=item *
2280
2281Several other minor changes
2282
2283=back
2284
2285Being a mechanical process pl2pm is not bullet proof. The converted
2286code will need careful checking, especially any package statements.
2287Don't delete the original .pl file till the new .pm one works!
2288
2289=back
2290
2291=head2 Guidelines for Reusing Application Code
2292
2293=over 4
2294
2295=item *
2296
2297Complete applications rarely belong in the Perl Module Library.
2298
2299=item *
2300
2301Many applications contain some Perl code that could be reused.
2302
2303Help save the world! Share your code in a form that makes it easy
2304to reuse.
2305
2306=item *
2307
2308Break-out the reusable code into one or more separate module files.
2309
2310=item *
2311
2312Take the opportunity to reconsider and redesign the interfaces.
2313
2314=item *
2315
2316In some cases the 'application' can then be reduced to a small
2317
2318fragment of code built on top of the reusable modules. In these cases
2319the application could invoked as:
2320
2321 % perl -e 'use Module::Name; method(@ARGV)' ...
2322or
2323 % perl -mModule::Name ... (in perl5.002 or higher)
2324
2325=back
2326
2327=head1 NOTE
2328
2329Perl does not enforce private and public parts of its modules as you may
2330have been used to in other languages like C++, Ada, or Modula-17. Perl
2331doesn't have an infatuation with enforced privacy. It would prefer
2332that you stayed out of its living room because you weren't invited, not
2333because it has a shotgun.
2334
2335The module and its user have a contract, part of which is common law,
2336and part of which is "written". Part of the common law contract is
2337that a module doesn't pollute any namespace it wasn't asked to. The
2338written contract for the module (A.K.A. documentation) may make other
2339provisions. But then you know when you C<use RedefineTheWorld> that
2340you're redefining the world and willing to take the consequences.