This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perlre.pod spellcheck
[perl5.git] / pod / perlmodlib.pod
CommitLineData
c165c82a
JH
1=for maintainers
2Generated by perlmodlib.PL -- DO NOT EDIT!
4e860d0a 3
f102b883
TC
4=head1 NAME
5
6perlmodlib - constructing new Perl modules and finding existing ones
7
f102b883
TC
8=head1 THE PERL MODULE LIBRARY
9
7ef5744c 10Many modules are included in the Perl distribution. These are described
19799a22 11below, and all end in F<.pm>. You may discover compiled library
7ef5744c 12files (usually ending in F<.so>) or small pieces of modules to be
19799a22
GS
13autoloaded (ending in F<.al>); these were automatically generated
14by the installation process. You may also discover files in the
15library directory that end in either F<.pl> or F<.ph>. These are
16old libraries supplied so that old programs that use them still
17run. The F<.pl> files will all eventually be converted into standard
18modules, and the F<.ph> files made by B<h2ph> will probably end up
19as extension modules made by B<h2xs>. (Some F<.ph> values may
20already be available through the POSIX, Errno, or Fcntl modules.)
21The B<pl2pm> file in the distribution may help in your conversion,
22but it's just a mechanical process and therefore far from bulletproof.
f102b883
TC
23
24=head2 Pragmatic Modules
25
19799a22
GS
26They work somewhat like compiler directives (pragmata) in that they
27tend to affect the compilation of your program, and thus will usually
28work well only when used within a C<use>, or C<no>. Most of these
29are lexically scoped, so an inner BLOCK may countermand them
30by saying:
f102b883
TC
31
32 no integer;
33 no strict 'refs';
4438c4b7 34 no warnings;
f102b883
TC
35
36which lasts until the end of that BLOCK.
37
19799a22
GS
38Some pragmas are lexically scoped--typically those that affect the
39C<$^H> hints variable. Others affect the current package instead,
77ca0c92 40like C<use vars> and C<use subs>, which allow you to predeclare a
19799a22
GS
41variables or subroutines within a particular I<file> rather than
42just a block. Such declarations are effective for the entire file
43for which they were declared. You cannot rescind them with C<no
44vars> or C<no subs>.
f102b883
TC
45
46The following pragmas are defined (and have their own documentation).
47
48=over 12
49
a4373870
CW
50=item assertions
51
5c5c2539 52Select assertions in blocks of code
a4373870
CW
53
54=item assertions::activate
55
5c5c2539 56Activate assertions
a4373870 57
97a1d740
YST
58=item assertions::compat
59
60Assertions for pre-5.9 versions of perl
61
09bef843
SB
62=item attributes
63
9e107c59 64Get/set subroutine or variable attributes
09bef843 65
ec90690f
TS
66=item attrs
67
68Set/get attributes of a subroutine (deprecated)
69
19799a22
GS
70=item autouse
71
9e107c59 72Postpone load of modules until a function is used
19799a22
GS
73
74=item base
75
f99d9048 76Establish IS-A relationship with base classes at compile time
f102b883 77
fa1c7b03
JH
78=item bigint
79
7ef5744c 80Transparent BigInteger support for Perl
fa1c7b03
JH
81
82=item bignum
83
84Transparent BigNumber support for Perl
85
86=item bigrat
87
82eec310 88Transparent BigNumber/BigRational support for Perl
fa1c7b03 89
f102b883
TC
90=item blib
91
19799a22
GS
92Use MakeMaker's uninstalled version of a package
93
2e1d04bc 94=item bytes
9e107c59 95
2e1d04bc 96Force byte semantics rather than character semantics
9e107c59
GS
97
98=item charnames
99
ec90690f 100Define character names for C<\N{named}> string literal escapes
9e107c59 101
19799a22
GS
102=item constant
103
9e107c59 104Declare constants
f102b883
TC
105
106=item diagnostics
107
f262848d 108Produce verbose warning diagnostics
19799a22 109
1bb908c3
JH
110=item encoding
111
ec90690f 112Allows you to write your script in non-ascii or non-utf8
1bb908c3 113
407700fe
RGS
114=item encoding::warnings
115
116Warn on implicit encoding conversions
117
3bf37fef
RGS
118=item feature
119
120Enable new syntactic features
121
19799a22
GS
122=item fields
123
2e1d04bc 124Compile-time class fields
19799a22
GS
125
126=item filetest
127
2e1d04bc 128Control the filetest permission operators
f102b883 129
d63e6bb6
JH
130=item if
131
132C<use> a Perl module if a condition holds
133
f102b883
TC
134=item integer
135
4e860d0a 136Use integer arithmetic instead of floating point
f102b883
TC
137
138=item less
139
2e1d04bc 140Request less of something from the compiler
f102b883 141
7ef5744c
RGS
142=item lib
143
144Manipulate @INC at compile time
145
f102b883
TC
146=item locale
147
2e1d04bc
JH
148Use and avoid POSIX locales for built-in operations
149
150=item open
151
cb9c8b59 152Set default PerlIO layers for input and output
f102b883 153
ec90690f
TS
154=item ops
155
156Restrict unsafe operations when compiling
157
f102b883
TC
158=item overload
159
3bf37fef 160Package for overloading Perl operations
f102b883 161
d63e6bb6
JH
162=item re
163
164Alter regular expression behaviour
165
f102b883
TC
166=item sigtrap
167
9e107c59 168Enable simple signal handling
f102b883 169
1bb908c3
JH
170=item sort
171
172Control sort() behaviour
173
f102b883
TC
174=item strict
175
9e107c59 176Restrict unsafe constructs
f102b883
TC
177
178=item subs
179
2e1d04bc 180Predeclare sub names
f102b883 181
ec90690f
TS
182=item threads
183
498e06b7 184Perl interpreter-based threads
ec90690f 185
7ef5744c
RGS
186=item threads::shared
187
188Perl extension for sharing data structures between threads
189
19799a22 190=item utf8
f102b883 191
1fa7ca25 192Enable/disable UTF-8 (or UTF-EBCDIC) in source code
f102b883
TC
193
194=item vars
195
2e1d04bc 196Predeclare global variable names (obsolete)
f102b883 197
7eaa0fdd
RGS
198=item version
199
200Perl extension for Version Objects
201
1bb908c3
JH
202=item vmsish
203
204Control VMS-specific language features
205
4438c4b7 206=item warnings
0453d815 207
9e107c59 208Control optional warnings
19799a22 209
13a2d996
SP
210=item warnings::register
211
212Warnings import function
213
f102b883
TC
214=back
215
216=head2 Standard Modules
217
218Standard, bundled modules are all expected to behave in a well-defined
219manner with respect to namespace pollution because they use the
220Exporter module. See their own documentation for details.
221
7ef5744c
RGS
222It's possible that not all modules listed below are installed on your
223system. For example, the GDBM_File module will not be installed if you
224don't have the gdbm library.
225
f102b883
TC
226=over 12
227
228=item AnyDBM_File
229
2e1d04bc 230Provide framework for multiple DBMs
f102b883 231
97a1d740
YST
232=item Archive::Tar
233
234Module for manipulations of tar archives
235
236=item Archive::Tar::File
237
238A subclass for in-memory extracted file from Archive::Tar
239
06a5f41f
JH
240=item Attribute::Handlers
241
242Simpler definition of attribute handlers
243
f102b883
TC
244=item AutoLoader
245
9e107c59 246Load subroutines only on demand
f102b883
TC
247
248=item AutoSplit
249
9e107c59 250Split a package for autoloading
f102b883 251
ec90690f
TS
252=item B
253
254The Perl Compiler
255
256=item B::Asmdata
257
258Autogenerated data about Perl ops, used to generate bytecode
259
260=item B::Assembler
261
262Assemble Perl bytecode
263
264=item B::Bblock
265
266Walk basic blocks
267
268=item B::Bytecode
269
270Perl compiler's bytecode backend
271
272=item B::C
273
274Perl compiler's C backend
275
276=item B::CC
277
278Perl compiler's optimized C translation backend
279
280=item B::Concise
281
282Walk Perl syntax tree, printing concise info about ops
283
284=item B::Debug
285
286Walk Perl syntax tree, printing debug info about ops
287
288=item B::Deparse
289
290Perl compiler backend to produce perl code
291
292=item B::Disassembler
293
294Disassemble Perl bytecode
295
296=item B::Lint
297
298Perl lint
299
300=item B::Showlex
301
302Show lexical variables used in functions or files
303
304=item B::Stackobj
305
306Helper module for CC backend
307
308=item B::Stash
309
310Show what stashes are loaded
311
312=item B::Terse
313
314Walk Perl syntax tree, printing terse info about ops
315
316=item B::Xref
317
318Generates cross reference reports for Perl programs
319
f102b883
TC
320=item Benchmark
321
2e1d04bc 322Benchmark running times of Perl code
9e107c59 323
ec90690f
TS
324=item ByteLoader
325
326Load byte compiled perl code
327
19799a22
GS
328=item CGI
329
2e1d04bc 330Simple Common Gateway Interface Class
19799a22
GS
331
332=item CGI::Apache
333
2e1d04bc 334Backward compatibility module for CGI.pm
19799a22
GS
335
336=item CGI::Carp
337
338CGI routines for writing to the HTTPD (or other) error log
339
340=item CGI::Cookie
341
342Interface to Netscape Cookies
343
344=item CGI::Fast
345
346CGI Interface for Fast CGI
347
9e107c59
GS
348=item CGI::Pretty
349
350Module to produce nicely formatted HTML code
351
19799a22
GS
352=item CGI::Push
353
354Simple Interface to Server Push
355
356=item CGI::Switch
357
2e1d04bc 358Backward compatibility module for defunct CGI::Switch
19799a22 359
4e860d0a
JH
360=item CGI::Util
361
362Internal utilities used by CGI module
363
f102b883
TC
364=item CPAN
365
2e1d04bc 366Query, download and build perl modules from CPAN sites
f102b883
TC
367
368=item CPAN::FirstTime
369
2e1d04bc 370Utility for CPAN::Config file Initialization
f102b883
TC
371
372=item CPAN::Nox
373
19799a22 374Wrapper around CPAN.pm without using any XS module
f102b883 375
3bf37fef
RGS
376=item CPAN::Version
377
378Utility functions to compare CPAN versions
379
f102b883
TC
380=item Carp
381
2e1d04bc 382Warn of errors (from perspective of caller)
9e107c59 383
4e860d0a
JH
384=item Carp::Heavy
385
f99d9048 386Heavy machinery, no user serviceable parts inside
4e860d0a
JH
387
388=item Class::ISA
389
390Report the search path for a class's ISA tree
391
f102b883
TC
392=item Class::Struct
393
9e107c59 394Declare struct-like datatypes as Perl classes
f102b883 395
498e06b7 396=item Compress::Raw::Zlib
97a1d740 397
498e06b7 398Low-Level Interface to zlib compression library
97a1d740 399
498e06b7 400=item Compress::Zlib
3bf37fef 401
498e06b7 402Interface to zlib compression library
3bf37fef 403
416e7255
JH
404=item Config
405
406Access Perl configuration information
407
f102b883
TC
408=item Cwd
409
9e107c59 410Get pathname of current working directory
f102b883 411
19799a22
GS
412=item DB
413
2e1d04bc 414Programmatic interface to the Perl debugging API (draft, subject to
19799a22 415
f99d9048
RGS
416=item DBM_Filter
417
418Filter DBM keys/values
419
498e06b7
RGS
420=item DBM_Filter::compress
421
422Filter for DBM_Filter
423
424=item DBM_Filter::encode
425
426Filter for DBM_Filter
427
428=item DBM_Filter::int32
429
430Filter for DBM_Filter
431
432=item DBM_Filter::null
433
434Filter for DBM_Filter
435
436=item DBM_Filter::utf8
437
438Filter for DBM_Filter
439
ec90690f
TS
440=item DB_File
441
442Perl5 access to Berkeley DB version 1.x
443
7ef5744c
RGS
444=item Data::Dumper
445
446Stringified perl data structures, suitable for both printing and C<eval>
447
448=item Devel::DProf
449
450A Perl code profiler
451
452=item Devel::Peek
453
454A data debugging tool for the XS programmer
455
f102b883
TC
456=item Devel::SelfStubber
457
9e107c59 458Generate stubs for a SelfLoading module
f102b883 459
4e860d0a
JH
460=item Digest
461
462Modules that calculate message digests
463
7ef5744c
RGS
464=item Digest::MD5
465
466Perl interface to the MD5 Algorithm
467
6d4c689d
RGS
468=item Digest::SHA
469
470Perl extension for SHA-1/224/256/384/512
471
f262848d
RGS
472=item Digest::base
473
474Digest base class
475
407700fe
RGS
476=item Digest::file
477
478Calculate digests of files
479
f102b883
TC
480=item DirHandle
481
9e107c59 482Supply object methods for directory handles
f102b883 483
19799a22
GS
484=item Dumpvalue
485
2e1d04bc 486Provides screen dump of Perl data.
f102b883 487
7ef5744c
RGS
488=item DynaLoader
489
490Dynamically load C libraries into Perl code
491
ec90690f
TS
492=item Encode
493
494Character encodings
495
7ef5744c
RGS
496=item Encode::Alias
497
498Alias definitions to encodings
499
500=item Encode::Byte
501
502Single Byte Encodings
503
504=item Encode::CJKConstants
505
506Internally used by Encode::??::ISO_2022_*
507
508=item Encode::CN
509
510China-based Chinese Encodings
511
512=item Encode::CN::HZ
513
514Internally used by Encode::CN
515
516=item Encode::Config
517
518Internally used by Encode
519
520=item Encode::EBCDIC
521
522EBCDIC Encodings
523
524=item Encode::Encoder
525
526Object Oriented Encoder
527
528=item Encode::Encoding
529
530Encode Implementation Base Class
531
532=item Encode::Guess
533
534Guesses encoding from data
535
536=item Encode::JP
537
538Japanese Encodings
539
540=item Encode::JP::H2Z
541
542Internally used by Encode::JP::2022_JP*
543
544=item Encode::JP::JIS7
545
546Internally used by Encode::JP
547
548=item Encode::KR
549
550Korean Encodings
551
552=item Encode::KR::2022_KR
553
554Internally used by Encode::KR
555
556=item Encode::MIME::Header
557
558MIME 'B' and 'Q' header encoding
559
560=item Encode::PerlIO
561
562A detailed document on Encode and PerlIO
563
564=item Encode::Supported
565
566Encodings supported by Encode
567
568=item Encode::Symbol
569
570Symbol Encodings
571
572=item Encode::TW
573
574Taiwan-based Chinese Encodings
575
576=item Encode::Unicode
577
578Various Unicode Transformation Formats
579
8b9c797b
JH
580=item Encode::Unicode::UTF7
581
582UTF-7 encoding
583
f102b883
TC
584=item English
585
2e1d04bc 586Use nice English (or awk) names for ugly punctuation variables
f102b883
TC
587
588=item Env
589
2e1d04bc 590Perl module that imports environment variables as scalars or arrays
f102b883 591
416e7255
JH
592=item Errno
593
594System errno constants
595
f102b883
TC
596=item Exporter
597
2e1d04bc 598Implements default import method for modules
9e107c59
GS
599
600=item Exporter::Heavy
601
602Exporter guts
19799a22 603
97a1d740
YST
604=item ExtUtils::CBuilder
605
606Compile and link C code for Perl modules
607
608=item ExtUtils::CBuilder::Platform::Windows
609
610Builder class for Windows platforms
611
19799a22
GS
612=item ExtUtils::Command
613
2e1d04bc 614Utilities to replace common UNIX commands in Makefiles etc.
f102b883 615
ec90690f
TS
616=item ExtUtils::Command::MM
617
618Commands for the MM's to use in Makefiles
619
422a9aca
JH
620=item ExtUtils::Constant
621
622Generate XS code to import C header constants
623
407700fe
RGS
624=item ExtUtils::Constant::Base
625
626Base class for ExtUtils::Constant objects
627
628=item ExtUtils::Constant::Utils
629
630Helper functions for ExtUtils::Constant
631
632=item ExtUtils::Constant::XS
633
634Base class for ExtUtils::Constant objects
635
f102b883
TC
636=item ExtUtils::Embed
637
2e1d04bc 638Utilities for embedding Perl in C/C++ applications
f102b883
TC
639
640=item ExtUtils::Install
641
9e107c59 642Install files from here to there
f102b883 643
19799a22
GS
644=item ExtUtils::Installed
645
646Inventory management of installed modules
647
f102b883
TC
648=item ExtUtils::Liblist
649
9e107c59
GS
650Determine libraries to use and how to use them
651
ec90690f
TS
652=item ExtUtils::MM
653
654OS adjusted ExtUtils::MakeMaker subclass
655
97a1d740
YST
656=item ExtUtils::MM_AIX
657
658AIX specific subclass of ExtUtils::MM_Unix
659
ec90690f
TS
660=item ExtUtils::MM_Any
661
639f8edf 662Platform-agnostic MM methods
ec90690f 663
d63e6bb6
JH
664=item ExtUtils::MM_BeOS
665
666Methods to override UN*X behaviour in ExtUtils::MakeMaker
667
9e107c59
GS
668=item ExtUtils::MM_Cygwin
669
2e1d04bc 670Methods to override UN*X behaviour in ExtUtils::MakeMaker
f102b883 671
ec90690f
TS
672=item ExtUtils::MM_DOS
673
674DOS specific subclass of ExtUtils::MM_Unix
675
676=item ExtUtils::MM_MacOS
677
407700fe 678Once produced Makefiles for MacOS Classic
ec90690f 679
5d80033a
JH
680=item ExtUtils::MM_NW5
681
682Methods to override UN*X behaviour in ExtUtils::MakeMaker
683
f102b883
TC
684=item ExtUtils::MM_OS2
685
2e1d04bc 686Methods to override UN*X behaviour in ExtUtils::MakeMaker
f102b883 687
97a1d740
YST
688=item ExtUtils::MM_QNX
689
690QNX specific subclass of ExtUtils::MM_Unix
691
ec90690f
TS
692=item ExtUtils::MM_UWIN
693
694U/WIN specific subclass of ExtUtils::MM_Unix
695
f102b883
TC
696=item ExtUtils::MM_Unix
697
9e107c59 698Methods used by ExtUtils::MakeMaker
f102b883
TC
699
700=item ExtUtils::MM_VMS
701
2e1d04bc 702Methods to override UN*X behaviour in ExtUtils::MakeMaker
19799a22 703
97a1d740
YST
704=item ExtUtils::MM_VOS
705
706VOS specific subclass of ExtUtils::MM_Unix
707
19799a22
GS
708=item ExtUtils::MM_Win32
709
2e1d04bc 710Methods to override UN*X behaviour in ExtUtils::MakeMaker
f102b883 711
ec90690f
TS
712=item ExtUtils::MM_Win95
713
714Method to customize MakeMaker for Win9X
715
716=item ExtUtils::MY
717
718ExtUtils::MakeMaker subclass for customization
719
f102b883
TC
720=item ExtUtils::MakeMaker
721
a4373870
CW
722Create a module Makefile
723
97a1d740
YST
724=item ExtUtils::MakeMaker::Config
725
726Wrapper around Config.pm
727
a4373870
CW
728=item ExtUtils::MakeMaker::FAQ
729
730Frequently Asked Questions About MakeMaker
731
732=item ExtUtils::MakeMaker::Tutorial
733
734Writing a module with MakeMaker
735
8b9c797b
JH
736=item ExtUtils::MakeMaker::bytes
737
f262848d 738Version-agnostic bytes.pm
8b9c797b 739
a4373870
CW
740=item ExtUtils::MakeMaker::vmsish
741
f262848d 742Platform-agnostic vmsish.pm
f102b883
TC
743
744=item ExtUtils::Manifest
745
9e107c59 746Utilities to write and check a MANIFEST file
f102b883
TC
747
748=item ExtUtils::Mkbootstrap
749
9e107c59 750Make a bootstrap file for use by DynaLoader
f102b883
TC
751
752=item ExtUtils::Mksymlists
753
9e107c59 754Write linker options files for dynamic extension
f102b883 755
19799a22
GS
756=item ExtUtils::Packlist
757
9e107c59 758Manage .packlist files
19799a22 759
97a1d740
YST
760=item ExtUtils::ParseXS
761
762Converts Perl XS code into C code
763
f102b883
TC
764=item ExtUtils::testlib
765
9e107c59 766Add blib/* directories to @INC
f102b883 767
b6c543e3
IZ
768=item Fatal
769
9e107c59 770Replace functions with equivalents which succeed or die
b6c543e3 771
ec90690f
TS
772=item Fcntl
773
774Load the C Fcntl.h defines
775
f102b883
TC
776=item File::Basename
777
3bf37fef 778Parse file paths into directory, filename and suffix.
9e107c59
GS
779
780=item File::CheckTree
781
782Run many filetest checks on a tree
f102b883 783
f102b883
TC
784=item File::Compare
785
19799a22 786Compare files or filehandles
f102b883
TC
787
788=item File::Copy
789
19799a22
GS
790Copy files or filehandles
791
792=item File::DosGlob
793
2e1d04bc 794DOS like globbing and then some
f102b883
TC
795
796=item File::Find
797
d63e6bb6 798Traverse a directory tree.
f102b883 799
7ef5744c
RGS
800=item File::Glob
801
802Perl extension for BSD glob routine
803
3bf37fef
RGS
804=item File::GlobMapper
805
806Extend File Glob to Allow Input and Output Files
807
f102b883
TC
808=item File::Path
809
2e1d04bc 810Create or remove directory trees
f102b883 811
f505c983
GS
812=item File::Spec
813
9e107c59 814Portably perform operations on file names
f505c983 815
06a5f41f
JH
816=item File::Spec::Cygwin
817
818Methods for Cygwin file specs
819
165c0277
JH
820=item File::Spec::Epoc
821
822Methods for Epoc file specs
823
f505c983
GS
824=item File::Spec::Functions
825
9e107c59 826Portably perform operations on file names
19799a22
GS
827
828=item File::Spec::Mac
829
1bb908c3 830File::Spec for Mac OS (Classic)
19799a22
GS
831
832=item File::Spec::OS2
833
9e107c59 834Methods for OS/2 file specs
19799a22
GS
835
836=item File::Spec::Unix
837
e61ecf27 838File::Spec for Unix, base for other File::Spec modules
19799a22
GS
839
840=item File::Spec::VMS
841
9e107c59 842Methods for VMS file specs
19799a22
GS
843
844=item File::Spec::Win32
845
9e107c59 846Methods for Win32 file specs
f505c983 847
2e1d04bc
JH
848=item File::Temp
849
850Return name and handle of a temporary file safely
851
f102b883
TC
852=item File::stat
853
9e107c59 854By-name interface to Perl's built-in stat() functions
f102b883
TC
855
856=item FileCache
857
9e107c59 858Keep more files open than the system permits
f102b883
TC
859
860=item FileHandle
861
9e107c59 862Supply object methods for filehandles
f102b883 863
165c0277
JH
864=item Filter::Simple
865
866Simplified source filtering
867
7ef5744c
RGS
868=item Filter::Util::Call
869
870Perl Source Filter Utility Module
871
f102b883
TC
872=item FindBin
873
2e1d04bc 874Locate directory of original perl script
f102b883 875
7ef5744c
RGS
876=item GDBM_File
877
878Perl5 access to the gdbm library.
879
f102b883
TC
880=item Getopt::Long
881
9e107c59 882Extended processing of command line options
f102b883
TC
883
884=item Getopt::Std
885
19799a22 886Process single-character switches with switch clustering
f102b883 887
d63e6bb6
JH
888=item Hash::Util
889
890A selection of general-utility hash subroutines
891
498e06b7
RGS
892=item Hash::Util::FieldHash
893
894Associate references with data
895
f102b883
TC
896=item I18N::Collate
897
2e1d04bc 898Compare 8-bit scalar data according to the current locale
f102b883 899
422a9aca
JH
900=item I18N::LangTags
901
902Functions for dealing with RFC3066-style language tags
903
407700fe
RGS
904=item I18N::LangTags::Detect
905
906Detect the user's language preferences
907
422a9aca
JH
908=item I18N::LangTags::List
909
4f233aa4 910Tags and names for human languages
422a9aca 911
7ef5744c
RGS
912=item I18N::Langinfo
913
914Query locale information
915
ec90690f
TS
916=item IO
917
918Load various IO modules
919
498e06b7
RGS
920=item IO::Compress::Base
921
922Base Class for IO::Compress modules
923
3bf37fef
RGS
924=item IO::Compress::Deflate
925
498e06b7 926Write RFC 1950 files/buffers
3bf37fef
RGS
927
928=item IO::Compress::Gzip
929
498e06b7 930Write RFC 1952 files/buffers
3bf37fef
RGS
931
932=item IO::Compress::RawDeflate
933
498e06b7
RGS
934Write RFC 1951 files/buffers
935
936=item IO::Compress::Zip
937
938Write zip files/buffers
3bf37fef 939
7ef5744c
RGS
940=item IO::Dir
941
942Supply object methods for directory handles
943
944=item IO::File
945
946Supply object methods for filehandles
947
948=item IO::Handle
949
950Supply object methods for I/O handles
951
952=item IO::Pipe
953
954Supply object methods for pipes
955
956=item IO::Poll
957
958Object interface to system poll call
959
960=item IO::Seekable
961
962Supply seek based methods for I/O objects
963
964=item IO::Select
965
966OO interface to the select system call
967
968=item IO::Socket
969
970Object interface to socket communications
971
972=item IO::Socket::INET
973
974Object interface for AF_INET domain sockets
975
976=item IO::Socket::UNIX
977
978Object interface for AF_UNIX domain sockets
979
3bf37fef
RGS
980=item IO::Uncompress::AnyInflate
981
498e06b7
RGS
982Uncompress zlib-based (zip, gzip) file/buffer
983
984=item IO::Uncompress::AnyUncompress
985
986Uncompress gzip, zip, bzip2 or lzop file/buffer
987
988=item IO::Uncompress::Base
989
990Base Class for IO::Uncompress modules
3bf37fef
RGS
991
992=item IO::Uncompress::Gunzip
993
498e06b7 994Read RFC 1952 files/buffers
3bf37fef
RGS
995
996=item IO::Uncompress::Inflate
997
498e06b7 998Read RFC 1950 files/buffers
3bf37fef
RGS
999
1000=item IO::Uncompress::RawInflate
1001
498e06b7
RGS
1002Read RFC 1951 files/buffers
1003
1004=item IO::Uncompress::Unzip
1005
1006Read zip files/buffers
3bf37fef 1007
97a1d740
YST
1008=item IO::Zlib
1009
1010IO:: style interface to L<Compress::Zlib>
1011
f102b883
TC
1012=item IPC::Open2
1013
9e107c59 1014Open a process for both reading and writing
f102b883
TC
1015
1016=item IPC::Open3
1017
9e107c59 1018Open a process for reading, writing, and error handling
f102b883 1019
7ef5744c
RGS
1020=item IPC::SysV
1021
1022SysV IPC constants
1023
1024=item IPC::SysV::Msg
1025
1026SysV Msg IPC object class
1027
1028=item IPC::SysV::Semaphore
1029
1030SysV Semaphore IPC object class
1031
1032=item List::Util
1033
1034A selection of general-utility list subroutines
1035
4e860d0a
JH
1036=item Locale::Constants
1037
1038Constants for Locale codes
1039
1040=item Locale::Country
1041
1042ISO codes for country identification (ISO 3166)
1043
1044=item Locale::Currency
1045
1046ISO three letter codes for currency identification (ISO 4217)
1047
1048=item Locale::Language
1049
1050ISO two letter codes for language identification (ISO 639)
1051
422a9aca
JH
1052=item Locale::Maketext
1053
1054Framework for localization
1055
1056=item Locale::Maketext::TPJ13
1057
1058Article about software localization
1059
d63e6bb6
JH
1060=item Locale::Script
1061
1062ISO codes for script identification (ISO 15924)
1063
7ef5744c
RGS
1064=item MIME::Base64
1065
1066Encoding and decoding of base64 strings
1067
1068=item MIME::Base64::QuotedPrint
1069
1070Encoding and decoding of quoted-printable strings
1071
f102b883
TC
1072=item Math::BigFloat
1073
5d80033a 1074Arbitrary size floating point math package
f102b883
TC
1075
1076=item Math::BigInt
1077
97a1d740 1078Arbitrary size integer/float math package
f102b883 1079
d0363f02
JH
1080=item Math::BigInt::Calc
1081
1082Pure Perl module to support Math::BigInt
1083
f99d9048
RGS
1084=item Math::BigInt::CalcEmu
1085
1086Emulate low-level math with BigInt code
1087
97a1d740
YST
1088=item Math::BigInt::FastCalc
1089
1090Math::BigInt::Calc with some XS for more speed
1091
fa1c7b03
JH
1092=item Math::BigRat
1093
407700fe 1094Arbitrary big rational numbers
fa1c7b03 1095
f102b883
TC
1096=item Math::Complex
1097
9e107c59 1098Complex numbers and associated mathematical functions
f102b883 1099
404b15a1
CS
1100=item Math::Trig
1101
9e107c59 1102Trigonometric functions
f102b883 1103
5d80033a
JH
1104=item Memoize
1105
ec90690f 1106Make functions faster by trading space for time
5d80033a
JH
1107
1108=item Memoize::AnyDBM_File
1109
1110Glue to provide EXISTS for AnyDBM_File for Storable use
1111
1112=item Memoize::Expire
1113
1114Plug-in module for automatic expiration of memoized values
1115
1116=item Memoize::ExpireFile
1117
1118Test for Memoize expiration semantics
1119
1120=item Memoize::ExpireTest
1121
1122Test for Memoize expiration semantics
1123
1124=item Memoize::NDBM_File
1125
1126Glue to provide EXISTS for NDBM_File for Storable use
1127
1128=item Memoize::SDBM_File
1129
1130Glue to provide EXISTS for SDBM_File for Storable use
1131
5d80033a
JH
1132=item Memoize::Storable
1133
1134Store Memoized data in Storable database
1135
498e06b7
RGS
1136=item Module::Build
1137
1138Build and install Perl modules
1139
1140=item Module::Build::API
1141
1142API Reference for Module Authors
1143
1144=item Module::Build::Authoring
1145
1146Authoring Module::Build modules
1147
1148=item Module::Build::Base
1149
1150Default methods for Module::Build
1151
1152=item Module::Build::Compat
1153
1154Compatibility with ExtUtils::MakeMaker
1155
1156=item Module::Build::ConfigData
1157
1158Configuration for Module::Build
1159
1160=item Module::Build::Cookbook
1161
1162Examples of Module::Build Usage
1163
1164=item Module::Build::ModuleInfo
1165
1166Gather package and POD information from a perl module files
1167
1168=item Module::Build::Notes
1169
1170Configuration for $module_name
1171
1172=item Module::Build::PPMMaker
1173
1174Perl Package Manager file creation
1175
1176=item Module::Build::Platform::Amiga
1177
1178Builder class for Amiga platforms
1179
1180=item Module::Build::Platform::Default
1181
1182Stub class for unknown platforms
1183
1184=item Module::Build::Platform::EBCDIC
1185
1186Builder class for EBCDIC platforms
1187
1188=item Module::Build::Platform::MPEiX
1189
1190Builder class for MPEiX platforms
1191
1192=item Module::Build::Platform::MacOS
1193
1194Builder class for MacOS platforms
1195
1196=item Module::Build::Platform::RiscOS
1197
1198Builder class for RiscOS platforms
1199
1200=item Module::Build::Platform::Unix
1201
1202Builder class for Unix platforms
1203
1204=item Module::Build::Platform::VMS
1205
1206Builder class for VMS platforms
1207
1208=item Module::Build::Platform::VOS
1209
1210Builder class for VOS platforms
1211
1212=item Module::Build::Platform::Windows
1213
1214Builder class for Windows platforms
1215
1216=item Module::Build::Platform::aix
1217
1218Builder class for AIX platform
1219
1220=item Module::Build::Platform::cygwin
1221
1222Builder class for Cygwin platform
1223
1224=item Module::Build::Platform::darwin
1225
1226Builder class for Mac OS X platform
1227
1228=item Module::Build::Platform::os2
1229
1230Builder class for OS/2 platform
1231
1232=item Module::Build::YAML
1233
1234Provides just enough YAML support so that Module::Build works even if YAML.pm is not installed
1235
407700fe
RGS
1236=item Module::CoreList
1237
1238What modules shipped with versions of perl
1239
498e06b7
RGS
1240=item Module::Load
1241
1242Runtime require of both modules and files
1243
1244=item Module::Loaded
1245
1246Mark modules as loaded or unloaded
1247
ec90690f
TS
1248=item NDBM_File
1249
1250Tied access to ndbm files
1251
1fa7ca25
JH
1252=item NEXT
1253
7a142657 1254Provide a pseudo-class NEXT (et al) that allows method redispatch
1fa7ca25 1255
5d80033a
JH
1256=item Net::Cmd
1257
1258Network Command class (as used by FTP, SMTP etc)
1259
1260=item Net::Config
1261
1262Local configuration data for libnet
1263
1264=item Net::Domain
1265
1266Attempt to evaluate the current host's internet name and domain
1267
5d80033a
JH
1268=item Net::FTP
1269
1270FTP Client class
1271
1272=item Net::NNTP
1273
1274NNTP Client class
1275
1276=item Net::Netrc
1277
1278OO interface to users netrc file
1279
5d80033a
JH
1280=item Net::POP3
1281
d63e6bb6 1282Post Office Protocol 3 Client class (RFC1939)
5d80033a 1283
f102b883
TC
1284=item Net::Ping
1285
9e107c59 1286Check a remote host for reachability
f102b883 1287
5d80033a
JH
1288=item Net::SMTP
1289
1290Simple Mail Transfer Protocol Client
1291
5d80033a
JH
1292=item Net::Time
1293
1294Time and daytime network client interface
1295
f102b883
TC
1296=item Net::hostent
1297
9e107c59 1298By-name interface to Perl's built-in gethost*() functions
f102b883 1299
5d80033a
JH
1300=item Net::libnetFAQ
1301
1302Libnet Frequently Asked Questions
1303
f102b883
TC
1304=item Net::netent
1305
9e107c59 1306By-name interface to Perl's built-in getnet*() functions
f102b883
TC
1307
1308=item Net::protoent
1309
9e107c59 1310By-name interface to Perl's built-in getproto*() functions
f102b883
TC
1311
1312=item Net::servent
1313
9e107c59 1314By-name interface to Perl's built-in getserv*() functions
f102b883 1315
ec90690f
TS
1316=item O
1317
1318Generic interface to Perl Compiler backends
1319
1320=item ODBM_File
1321
1322Tied access to odbm files
1323
1324=item Opcode
1325
1326Disable named opcodes when compiling perl code
1327
1328=item POSIX
1329
1330Perl interface to IEEE Std 1003.1
1331
498e06b7
RGS
1332=item Package::Constants
1333
1334List all constants declared in a package
1335
4e860d0a
JH
1336=item PerlIO
1337
1338On demand loader for PerlIO layers and root of PerlIO::* name space
1339
7ef5744c
RGS
1340=item PerlIO::encoding
1341
1342Encoding layer
1343
1344=item PerlIO::scalar
1345
639f8edf 1346In-memory IO, scalar IO
7ef5744c
RGS
1347
1348=item PerlIO::via
1349
1350Helper class for PerlIO layers implemented in perl
1351
c40f6c4a
JH
1352=item PerlIO::via::QuotedPrint
1353
1354PerlIO layer for quoted-printable strings
1355
9e107c59
GS
1356=item Pod::Checker
1357
1358Check pod documents for syntax errors
1359
3bf37fef
RGS
1360=item Pod::Escapes
1361
1362For resolving Pod EE<lt>...E<gt> sequences
1363
2e1d04bc
JH
1364=item Pod::Find
1365
1366Find POD documents in directory trees
1367
06a5f41f
JH
1368=item Pod::Functions
1369
1370Group Perl's functions a la perlfunc.pod
1371
19799a22
GS
1372=item Pod::Html
1373
9e107c59
GS
1374Module to convert pod files to HTML
1375
1376=item Pod::InputObjects
1377
2e1d04bc 1378Objects representing POD input paragraphs, commands, etc.
9e107c59 1379
13a2d996
SP
1380=item Pod::LaTeX
1381
1382Convert Pod data to formatted Latex
1383
9e107c59
GS
1384=item Pod::Man
1385
1386Convert POD data to formatted *roff input
1387
1bb908c3
JH
1388=item Pod::ParseLink
1389
248e172a 1390Parse an LE<lt>E<gt> formatting code in POD text
1bb908c3 1391
2e1d04bc
JH
1392=item Pod::ParseUtils
1393
1394Helpers for POD parsing and conversion
1395
9e107c59
GS
1396=item Pod::Parser
1397
1398Base class for creating POD filters and translators
1399
a4373870
CW
1400=item Pod::Perldoc::ToChecker
1401
1402Let Perldoc check Pod for errors
1403
1404=item Pod::Perldoc::ToMan
1405
1406Let Perldoc render Pod as man pages
1407
1408=item Pod::Perldoc::ToNroff
1409
1410Let Perldoc convert Pod to nroff
1411
1412=item Pod::Perldoc::ToPod
1413
1414Let Perldoc render Pod as ... Pod!
1415
1416=item Pod::Perldoc::ToRtf
1417
1418Let Perldoc render Pod as RTF
1419
1420=item Pod::Perldoc::ToText
1421
1422Let Perldoc render Pod as plaintext
1423
1424=item Pod::Perldoc::ToTk
1425
1426Let Perldoc use Tk::Pod to render Pod
1427
1428=item Pod::Perldoc::ToXml
1429
1430Let Perldoc render Pod as XML
1431
1432=item Pod::PlainText
1433
1434Convert POD data to formatted ASCII text
1435
2e1d04bc
JH
1436=item Pod::Plainer
1437
1438Perl extension for converting Pod to old style Pod.
1439
9e107c59
GS
1440=item Pod::Select
1441
1442Extract selected sections of POD from input
19799a22 1443
3bf37fef
RGS
1444=item Pod::Simple
1445
1446Framework for parsing Pod
1447
1448=item Pod::Simple::Checker
1449
1450Check the Pod syntax of a document
1451
1452=item Pod::Simple::Debug
1453
1454Put Pod::Simple into trace/debug mode
1455
1456=item Pod::Simple::DumpAsText
1457
1458Dump Pod-parsing events as text
1459
1460=item Pod::Simple::DumpAsXML
1461
1462Turn Pod into XML
1463
1464=item Pod::Simple::HTML
1465
1466Convert Pod to HTML
1467
1468=item Pod::Simple::HTMLBatch
1469
1470Convert several Pod files to several HTML files
1471
1472=item Pod::Simple::LinkSection
1473
1474Represent "section" attributes of L codes
1475
1476=item Pod::Simple::Methody
1477
1478Turn Pod::Simple events into method calls
1479
1480=item Pod::Simple::PullParser
1481
1482A pull-parser interface to parsing Pod
1483
1484=item Pod::Simple::PullParserEndToken
1485
1486End-tokens from Pod::Simple::PullParser
1487
1488=item Pod::Simple::PullParserStartToken
1489
1490Start-tokens from Pod::Simple::PullParser
1491
1492=item Pod::Simple::PullParserTextToken
1493
1494Text-tokens from Pod::Simple::PullParser
1495
1496=item Pod::Simple::PullParserToken
1497
1498Tokens from Pod::Simple::PullParser
1499
1500=item Pod::Simple::RTF
1501
1502Format Pod as RTF
1503
1504=item Pod::Simple::Search
1505
1506Find POD documents in directory trees
1507
1508=item Pod::Simple::SimpleTree
1509
1510Parse Pod into a simple parse tree
1511
1512=item Pod::Simple::Subclassing
1513
1514Write a formatter as a Pod::Simple subclass
1515
1516=item Pod::Simple::Text
1517
1518Format Pod as plaintext
1519
1520=item Pod::Simple::TextContent
1521
1522Get the text content of Pod
1523
1524=item Pod::Simple::XMLOutStream
1525
1526Turn Pod into XML
1527
19799a22
GS
1528=item Pod::Text
1529
9e107c59
GS
1530Convert POD data to formatted ASCII text
1531
1532=item Pod::Text::Color
1533
1534Convert POD data to formatted color ASCII text
1535
4e860d0a
JH
1536=item Pod::Text::Overstrike
1537
1538Convert POD data to formatted overstrike text
1539
2e1d04bc
JH
1540=item Pod::Text::Termcap
1541
1542Convert POD data to ASCII text with format escapes
1543
9e107c59
GS
1544=item Pod::Usage
1545
1546Print a usage message from embedded pod documentation
f102b883 1547
ec90690f
TS
1548=item SDBM_File
1549
1550Tied access to sdbm files
1551
1552=item Safe
1553
1554Compile and execute code in restricted compartments
1555
7ef5744c
RGS
1556=item Scalar::Util
1557
1558A selection of general-utility scalar subroutines
1559
f102b883
TC
1560=item Search::Dict
1561
9e107c59 1562Search for key in dictionary file
f102b883
TC
1563
1564=item SelectSaver
1565
9e107c59 1566Save and restore selected file handle
f102b883
TC
1567
1568=item SelfLoader
1569
9e107c59 1570Load functions only on demand
f102b883
TC
1571
1572=item Shell
1573
2e1d04bc 1574Run shell commands transparently within perl
f102b883 1575
ec90690f
TS
1576=item Socket
1577
1578Load the C socket.h defines and structure manipulators
1579
1580=item Storable
1581
1582Persistence for Perl data structures
1583
4e860d0a
JH
1584=item Switch
1585
1586A switch statement for Perl
1587
f102b883
TC
1588=item Symbol
1589
9e107c59 1590Manipulate Perl symbols and their names
f102b883 1591
7ef5744c
RGS
1592=item Sys::Hostname
1593
1594Try every conceivable way to get hostname
1595
1596=item Sys::Syslog
1597
1598Perl interface to the UNIX syslog(3) calls
1599
2e1d04bc 1600=item Term::ANSIColor
f102b883 1601
2e1d04bc 1602Color screen output using ANSI escape sequences
f102b883
TC
1603
1604=item Term::Cap
1605
2e1d04bc 1606Perl termcap interface
f102b883
TC
1607
1608=item Term::Complete
1609
2e1d04bc 1610Perl word completion module
f102b883
TC
1611
1612=item Term::ReadLine
1613
7ef5744c 1614Perl interface to various C<readline> packages.
19799a22
GS
1615
1616=item Test
1617
9e107c59 1618Provides a simple framework for writing test scripts
f102b883 1619
1bb908c3
JH
1620=item Test::Builder
1621
1622Backend for building test libraries
1623
3bf37fef
RGS
1624=item Test::Builder::Module
1625
1626Base class for test modules
1627
1628=item Test::Builder::Tester
1629
1630Test testsuites that have been built with
1631
1632=item Test::Builder::Tester::Color
1633
1634Turn on colour in Test::Builder::Tester
1635
f102b883
TC
1636=item Test::Harness
1637
f262848d 1638Run Perl standard test scripts with statistics
f102b883 1639
d63e6bb6
JH
1640=item Test::Harness::Assert
1641
1642Simple assert
1643
1644=item Test::Harness::Iterator
1645
1646Internal Test::Harness Iterator
1647
97a1d740
YST
1648=item Test::Harness::Point
1649
1650Object for tracking a single test point
1651
d63e6bb6
JH
1652=item Test::Harness::Straps
1653
1654Detailed analysis of test results
1655
407700fe
RGS
1656=item Test::Harness::TAP
1657
1658Documentation for the TAP format
1659
498e06b7
RGS
1660=item Test::Harness::Util
1661
1662Utility functions for Test::Harness::*
1663
7a49b635
JH
1664=item Test::More
1665
1666Yet another framework for writing test scripts
1667
1668=item Test::Simple
1669
1670Basic utilities for writing tests.
1671
e61ecf27
JH
1672=item Test::Tutorial
1673
1674A tutorial about writing really basic tests
1675
f102b883
TC
1676=item Text::Abbrev
1677
9e107c59 1678Create an abbreviation table from a list
f102b883 1679
4e860d0a
JH
1680=item Text::Balanced
1681
1682Extract delimited text sequences from strings.
1683
f102b883
TC
1684=item Text::ParseWords
1685
2e1d04bc 1686Parse text into an array of tokens or array of arrays
f102b883
TC
1687
1688=item Text::Soundex
1689
2e1d04bc 1690Implementation of the Soundex Algorithm as Described by Knuth
f102b883 1691
4e860d0a
JH
1692=item Text::Tabs
1693
1694Expand and unexpand tabs per the unix expand(1) and unexpand(1)
1695
f102b883
TC
1696=item Text::Wrap
1697
9e107c59 1698Line wrapping to form simple paragraphs
19799a22 1699
1bb908c3
JH
1700=item Thread
1701
416e7255 1702Manipulate threads in Perl (for old code only)
1bb908c3 1703
ec90690f
TS
1704=item Thread::Queue
1705
83272a45 1706Thread-safe queues
ec90690f
TS
1707
1708=item Thread::Semaphore
1709
83272a45 1710Thread-safe semaphores
ec90690f 1711
7ef5744c
RGS
1712=item Thread::Signal
1713
1714Start a thread which runs signal handlers reliably (for old code)
1715
1716=item Thread::Specific
1717
1718Thread-specific keys
1719
19799a22
GS
1720=item Tie::Array
1721
9e107c59 1722Base class for tied arrays
19799a22 1723
d63e6bb6
JH
1724=item Tie::File
1725
1726Access the lines of a disk file via a Perl array
1727
19799a22
GS
1728=item Tie::Handle
1729
9e107c59 1730Base class definitions for tied handles
19799a22 1731
9e107c59 1732=item Tie::Hash
f102b883 1733
9e107c59 1734Base class definitions for tied hashes
f102b883 1735
d63e6bb6
JH
1736=item Tie::Memoize
1737
1738Add data to hash when needed
1739
f102b883
TC
1740=item Tie::RefHash
1741
9e107c59 1742Use references as hash keys
f102b883 1743
9e107c59 1744=item Tie::Scalar
f102b883 1745
9e107c59 1746Base class definitions for tied scalars
f102b883
TC
1747
1748=item Tie::SubstrHash
1749
19799a22 1750Fixed-table-size, fixed-key-length hashing
f102b883 1751
7ef5744c
RGS
1752=item Time::HiRes
1753
1754High resolution alarm, sleep, gettimeofday, interval timers
1755
f102b883
TC
1756=item Time::Local
1757
9e107c59 1758Efficiently compute time from local and GMT time
f102b883
TC
1759
1760=item Time::gmtime
1761
9e107c59 1762By-name interface to Perl's built-in gmtime() function
f102b883
TC
1763
1764=item Time::localtime
1765
9e107c59 1766By-name interface to Perl's built-in localtime() function
f102b883
TC
1767
1768=item Time::tm
1769
9e107c59 1770Internal object used by Time::gmtime and Time::localtime
f102b883
TC
1771
1772=item UNIVERSAL
1773
9e107c59 1774Base class for ALL classes (blessed references)
f102b883 1775
e61ecf27
JH
1776=item Unicode::Collate
1777
ec90690f 1778Unicode Collation Algorithm
e61ecf27 1779
7ef5744c
RGS
1780=item Unicode::Normalize
1781
1782Unicode Normalization Forms
1783
e61ecf27 1784=item Unicode::UCD
fbe3d936
JH
1785
1786Unicode character database
1787
f102b883
TC
1788=item User::grent
1789
9e107c59 1790By-name interface to Perl's built-in getgr*() functions
f102b883
TC
1791
1792=item User::pwent
1793
9e107c59 1794By-name interface to Perl's built-in getpw*() functions
f102b883 1795
7ef5744c
RGS
1796=item XS::APItest
1797
1798Test the perl C API
1799
1800=item XS::Typemap
1801
1802Module to test the XS typemaps distributed with perl
1803
1804=item XSLoader
1805
1806Dynamically load C libraries into Perl code
1807
f102b883
TC
1808=back
1809
19799a22 1810To find out I<all> modules installed on your system, including
2e1d04bc 1811those without documentation or outside the standard release,
a4373870
CW
1812just use the following command (under the default win32 shell,
1813double quotes should be used instead of single quotes).
f102b883 1814
a4373870
CW
1815 % perl -MFile::Find=find -MFile::Spec::Functions -Tlwe \
1816 'find { wanted => sub { print canonpath $_ if /\.pm\z/ },
1817 no_chdir => 1 }, @INC'
f102b883 1818
8518420c 1819(The -T is here to prevent '.' from being listed in @INC.)
2e1d04bc
JH
1820They should all have their own documentation installed and accessible
1821via your system man(1) command. If you do not have a B<find>
19799a22
GS
1822program, you can use the Perl B<find2perl> program instead, which
1823generates Perl code as output you can run through perl. If you
1824have a B<man> program but it doesn't find your modules, you'll have
2e1d04bc
JH
1825to fix your manpath. See L<perl> for details. If you have no
1826system B<man> command, you might try the B<perldoc> program.
f102b883 1827
8518420c
RGS
1828Note also that the command C<perldoc perllocal> gives you a (possibly
1829incomplete) list of the modules that have been further installed on
1830your system. (The perllocal.pod file is updated by the standard MakeMaker
1831install process.)
1832
f102b883
TC
1833=head2 Extension Modules
1834
19799a22
GS
1835Extension modules are written in C (or a mix of Perl and C). They
1836are usually dynamically loaded into Perl if and when you need them,
d1be9408 1837but may also be linked in statically. Supported extension modules
19799a22 1838include Socket, Fcntl, and POSIX.
f102b883
TC
1839
1840Many popular C extension modules do not come bundled (at least, not
19799a22
GS
1841completely) due to their sizes, volatility, or simply lack of time
1842for adequate testing and configuration across the multitude of
1843platforms on which Perl was beta-tested. You are encouraged to
1844look for them on CPAN (described below), or using web search engines
7ef5744c 1845like Alta Vista or Google.
f102b883
TC
1846
1847=head1 CPAN
1848
19799a22
GS
1849CPAN stands for Comprehensive Perl Archive Network; it's a globally
1850replicated trove of Perl materials, including documentation, style
2e1d04bc 1851guides, tricks and traps, alternate ports to non-Unix systems and
19799a22 1852occasional binary distributions for these. Search engines for
1577cd80 1853CPAN can be found at http://www.cpan.org/
19799a22
GS
1854
1855Most importantly, CPAN includes around a thousand unbundled modules,
1856some of which require a C compiler to build. Major categories of
1857modules are:
f102b883 1858
4e860d0a 1859=over
f102b883
TC
1860
1861=item *
551e1d92 1862
f102b883
TC
1863Language Extensions and Documentation Tools
1864
1865=item *
551e1d92 1866
f102b883
TC
1867Development Support
1868
1869=item *
551e1d92 1870
f102b883
TC
1871Operating System Interfaces
1872
1873=item *
551e1d92 1874
f102b883
TC
1875Networking, Device Control (modems) and InterProcess Communication
1876
1877=item *
551e1d92 1878
f102b883
TC
1879Data Types and Data Type Utilities
1880
1881=item *
551e1d92 1882
f102b883
TC
1883Database Interfaces
1884
1885=item *
551e1d92 1886
f102b883
TC
1887User Interfaces
1888
1889=item *
551e1d92 1890
f102b883
TC
1891Interfaces to / Emulations of Other Programming Languages
1892
1893=item *
551e1d92 1894
f102b883
TC
1895File Names, File Systems and File Locking (see also File Handles)
1896
1897=item *
551e1d92 1898
f102b883
TC
1899String Processing, Language Text Processing, Parsing, and Searching
1900
1901=item *
551e1d92 1902
f102b883
TC
1903Option, Argument, Parameter, and Configuration File Processing
1904
1905=item *
551e1d92 1906
f102b883
TC
1907Internationalization and Locale
1908
1909=item *
551e1d92 1910
f102b883
TC
1911Authentication, Security, and Encryption
1912
1913=item *
551e1d92 1914
f102b883
TC
1915World Wide Web, HTML, HTTP, CGI, MIME
1916
1917=item *
551e1d92 1918
f102b883
TC
1919Server and Daemon Utilities
1920
1921=item *
551e1d92 1922
f102b883
TC
1923Archiving and Compression
1924
1925=item *
551e1d92 1926
f102b883
TC
1927Images, Pixmap and Bitmap Manipulation, Drawing, and Graphing
1928
1929=item *
551e1d92 1930
f102b883
TC
1931Mail and Usenet News
1932
1933=item *
551e1d92 1934
f102b883
TC
1935Control Flow Utilities (callbacks and exceptions etc)
1936
1937=item *
551e1d92 1938
f102b883
TC
1939File Handle and Input/Output Stream Utilities
1940
1941=item *
551e1d92 1942
f102b883
TC
1943Miscellaneous Modules
1944
1945=back
1946
5df44211
JH
1947The list of the registered CPAN sites as of this writing follows.
1948Please note that the sorting order is alphabetical on fields:
1949
1950Continent
1951 |
1952 |-->Country
1953 |
1954 |-->[state/province]
1955 |
1956 |-->ftp
1957 |
1958 |-->[http]
1959
1960and thus the North American servers happen to be listed between the
1961European and the South American sites.
1962
1963You should try to choose one close to you.
f102b883 1964
4e860d0a
JH
1965=head2 Africa
1966
cea6626f 1967=over 4
f102b883 1968
5df44211 1969=item South Africa
4e860d0a 1970
5c5c2539
JH
1971 http://ftp.rucus.ru.ac.za/pub/perl/CPAN/
1972 ftp://ftp.rucus.ru.ac.za/pub/perl/CPAN/
5df44211 1973 ftp://ftp.is.co.za/programming/perl/CPAN/
5df44211
JH
1974 ftp://ftp.saix.net/pub/CPAN/
1975 ftp://ftp.sun.ac.za/CPAN/CPAN/
4e860d0a
JH
1976
1977=back
1978
1979=head2 Asia
1980
1981=over 4
1982
5df44211 1983=item China
4e860d0a 1984
5c5c2539 1985 http://cpan.linuxforum.net/
5df44211
JH
1986 http://cpan.shellhung.org/
1987 ftp://ftp.shellhung.org/pub/CPAN
5c5c2539 1988 ftp://mirrors.hknet.com/CPAN
37a78d01 1989
5df44211 1990=item Indonesia
37a78d01 1991
5c5c2539 1992 http://mirrors.tf.itb.ac.id/cpan/
5df44211
JH
1993 http://cpan.cbn.net.id/
1994 ftp://ftp.cbn.net.id/mirror/CPAN
37a78d01 1995
5df44211 1996=item Israel
37a78d01 1997
5df44211
JH
1998 ftp://ftp.iglu.org.il/pub/CPAN/
1999 http://cpan.lerner.co.il/
2000 http://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/
2001 ftp://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/
37a78d01 2002
5df44211 2003=item Japan
37a78d01 2004
5df44211
JH
2005 ftp://ftp.u-aizu.ac.jp/pub/CPAN
2006 ftp://ftp.kddlabs.co.jp/CPAN/
5df44211
JH
2007 ftp://ftp.ayamura.org/pub/CPAN/
2008 ftp://ftp.jaist.ac.jp/pub/lang/perl/CPAN/
7a142657
JH
2009 http://ftp.cpan.jp/
2010 ftp://ftp.cpan.jp/CPAN/
5df44211
JH
2011 ftp://ftp.dti.ad.jp/pub/lang/CPAN/
2012 ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/
37a78d01 2013
5c5c2539 2014=item Malaysia
37a78d01 2015
5c5c2539
JH
2016 http://cpan.MyBSD.org.my
2017 http://mirror.leafbug.org/pub/CPAN
2018 http://ossig.mncc.com.my/mirror/pub/CPAN
4e860d0a 2019
5df44211 2020=item Russian Federation
4e860d0a 2021
5df44211 2022 http://cpan.tomsk.ru
7a142657 2023 ftp://cpan.tomsk.ru/
4e860d0a 2024
5df44211 2025=item Saudi Arabia
4e860d0a 2026
5df44211 2027 ftp://ftp.isu.net.sa/pub/CPAN/
4e860d0a 2028
5df44211 2029=item Singapore
4e860d0a 2030
5c5c2539
JH
2031 http://CPAN.en.com.sg/
2032 ftp://cpan.en.com.sg/
5df44211
JH
2033 http://mirror.averse.net/pub/CPAN
2034 ftp://mirror.averse.net/pub/CPAN
5c5c2539
JH
2035 http://cpan.oss.eznetsols.org
2036 ftp://ftp.oss.eznetsols.org/cpan
4e860d0a 2037
5df44211 2038=item South Korea
4e860d0a 2039
5df44211
JH
2040 http://CPAN.bora.net/
2041 ftp://ftp.bora.net/pub/CPAN/
5c5c2539
JH
2042 http://mirror.kr.FreeBSD.org/CPAN
2043 ftp://ftp.kr.FreeBSD.org/pub/CPAN
4e860d0a 2044
5df44211 2045=item Taiwan
4e860d0a 2046
5df44211 2047 ftp://ftp.nctu.edu.tw/UNIX/perl/CPAN
5c5c2539
JH
2048 http://cpan.cdpa.nsysu.edu.tw/
2049 ftp://cpan.cdpa.nsysu.edu.tw/pub/CPAN
2050 http://ftp.isu.edu.tw/pub/CPAN
2051 ftp://ftp.isu.edu.tw/pub/CPAN
5df44211
JH
2052 ftp://ftp1.sinica.edu.tw/pub1/perl/CPAN/
2053 http://ftp.tku.edu.tw/pub/CPAN/
2054 ftp://ftp.tku.edu.tw/pub/CPAN/
7a142657 2055
5df44211 2056=item Thailand
4e860d0a 2057
5df44211
JH
2058 ftp://ftp.loxinfo.co.th/pub/cpan/
2059 ftp://ftp.cs.riubon.ac.th/pub/mirrors/CPAN/
4e860d0a
JH
2060
2061=back
2062
2063=head2 Central America
2064
2065=over 4
2066
5df44211 2067=item Costa Rica
4e860d0a 2068
5df44211
JH
2069 http://ftp.ucr.ac.cr/Unix/CPAN/
2070 ftp://ftp.ucr.ac.cr/pub/Unix/CPAN/
4e860d0a
JH
2071
2072=back
2073
2074=head2 Europe
2075
2076=over 4
2077
5df44211 2078=item Austria
4e860d0a 2079
639f8edf
HS
2080 http://cpan.inode.at/
2081 ftp://cpan.inode.at
5df44211 2082 ftp://ftp.tuwien.ac.at/pub/CPAN/
4e860d0a 2083
5df44211 2084=item Belgium
4e860d0a 2085
5df44211
JH
2086 http://ftp.easynet.be/pub/CPAN/
2087 ftp://ftp.easynet.be/pub/CPAN/
2088 http://cpan.skynet.be
5c5c2539 2089 ftp://ftp.cpan.skynet.be/pub/CPAN
5df44211 2090 ftp://ftp.kulnet.kuleuven.ac.be/pub/mirror/CPAN/
4e860d0a 2091
7a142657
JH
2092=item Bosnia and Herzegovina
2093
2094 http://cpan.blic.net/
2095
5df44211 2096=item Bulgaria
4e860d0a 2097
5c5c2539
JH
2098 http://cpan.online.bg
2099 ftp://cpan.online.bg/cpan
2100 http://cpan.zadnik.org
2101 ftp://ftp.zadnik.org/mirrors/CPAN/
5df44211
JH
2102 http://cpan.lirex.net/
2103 ftp://ftp.lirex.net/pub/mirrors/CPAN
4e860d0a 2104
5df44211 2105=item Croatia
4e860d0a 2106
5df44211
JH
2107 http://ftp.linux.hr/pub/CPAN/
2108 ftp://ftp.linux.hr/pub/CPAN/
4e860d0a 2109
5df44211 2110=item Czech Republic
4e860d0a 2111
5df44211
JH
2112 ftp://ftp.fi.muni.cz/pub/CPAN/
2113 ftp://sunsite.mff.cuni.cz/MIRRORS/ftp.funet.fi/pub/languages/perl/CPAN/
4e860d0a 2114
5df44211 2115=item Denmark
4e860d0a 2116
5df44211
JH
2117 http://mirrors.sunsite.dk/cpan/
2118 ftp://sunsite.dk/mirrors/cpan/
2119 http://cpan.cybercity.dk
2120 http://www.cpan.dk/CPAN/
2121 ftp://www.cpan.dk/ftp.cpan.org/CPAN/
4e860d0a 2122
5df44211 2123=item Estonia
4e860d0a 2124
5df44211 2125 ftp://ftp.ut.ee/pub/languages/perl/CPAN/
4e860d0a 2126
5df44211 2127=item Finland
4e860d0a 2128
5df44211 2129 ftp://ftp.funet.fi/pub/languages/perl/CPAN/
5c5c2539 2130 http://mirror.eunet.fi/CPAN
4e860d0a 2131
5df44211 2132=item France
37a78d01 2133
5c5c2539 2134 http://www.enstimac.fr/Perl/CPAN
5df44211
JH
2135 http://ftp.u-paris10.fr/perl/CPAN
2136 ftp://ftp.u-paris10.fr/perl/CPAN
2137 http://cpan.mirrors.easynet.fr/
2138 ftp://cpan.mirrors.easynet.fr/pub/ftp.cpan.org/
2139 ftp://ftp.club-internet.fr/pub/perl/CPAN/
2140 http://fr.cpan.org/
2141 ftp://ftp.lip6.fr/pub/perl/CPAN/
2142 ftp://ftp.oleane.net/pub/mirrors/CPAN/
2143 ftp://ftp.pasteur.fr/pub/computing/CPAN/
2144 http://mir2.ovh.net/ftp.cpan.org
2145 ftp://mir1.ovh.net/ftp.cpan.org
5c5c2539
JH
2146 http://ftp.crihan.fr/mirrors/ftp.cpan.org/
2147 ftp://ftp.crihan.fr/mirrors/ftp.cpan.org/
5df44211
JH
2148 http://ftp.u-strasbg.fr/CPAN
2149 ftp://ftp.u-strasbg.fr/CPAN
5df44211
JH
2150 ftp://cpan.cict.fr/pub/CPAN/
2151 ftp://ftp.uvsq.fr/pub/perl/CPAN/
37a78d01 2152
5df44211 2153=item Germany
37a78d01 2154
5c5c2539 2155 ftp://ftp.rub.de/pub/CPAN/
5df44211
JH
2156 ftp://ftp.freenet.de/pub/ftp.cpan.org/pub/CPAN/
2157 ftp://ftp.uni-erlangen.de/pub/source/CPAN/
2158 ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/CPAN
2159 http://pandemonium.tiscali.de/pub/CPAN/
2160 ftp://pandemonium.tiscali.de/pub/CPAN/
2161 http://ftp.gwdg.de/pub/languages/perl/CPAN/
2162 ftp://ftp.gwdg.de/pub/languages/perl/CPAN/
2163 ftp://ftp.uni-hamburg.de/pub/soft/lang/perl/CPAN/
2164 ftp://ftp.leo.org/pub/CPAN/
2165 http://cpan.noris.de/
2166 ftp://cpan.noris.de/pub/CPAN/
2167 ftp://ftp.mpi-sb.mpg.de/pub/perl/CPAN/
2168 ftp://ftp.gmd.de/mirrors/CPAN/
4e860d0a 2169
5df44211 2170=item Greece
4e860d0a 2171
5c5c2539 2172 ftp://ftp.acn.gr/pub/lang/perl
5df44211
JH
2173 ftp://ftp.forthnet.gr/pub/languages/perl/CPAN
2174 ftp://ftp.ntua.gr/pub/lang/perl/
4e860d0a 2175
5df44211 2176=item Hungary
4e860d0a 2177
5df44211
JH
2178 http://ftp.kfki.hu/packages/perl/CPAN/
2179 ftp://ftp.kfki.hu/pub/packages/perl/CPAN/
4e860d0a 2180
5df44211 2181=item Iceland
4e860d0a 2182
5df44211
JH
2183 http://ftp.rhnet.is/pub/CPAN/
2184 ftp://ftp.rhnet.is/pub/CPAN/
4e860d0a 2185
5df44211 2186=item Ireland
4e860d0a 2187
5df44211
JH
2188 http://cpan.indigo.ie/
2189 ftp://cpan.indigo.ie/pub/CPAN/
5c5c2539
JH
2190 http://ftp.heanet.ie/mirrors/ftp.perl.org/pub/CPAN
2191 ftp://ftp.heanet.ie/mirrors/ftp.perl.org/pub/CPAN
5df44211
JH
2192 http://sunsite.compapp.dcu.ie/pub/perl/
2193 ftp://sunsite.compapp.dcu.ie/pub/perl/
4e860d0a 2194
5df44211 2195=item Italy
4e860d0a 2196
5df44211
JH
2197 http://cpan.nettuno.it/
2198 http://gusp.dyndns.org/CPAN/
2199 ftp://gusp.dyndns.org/pub/CPAN
2200 http://softcity.iol.it/cpan
2201 ftp://softcity.iol.it/pub/cpan
2202 ftp://ftp.unina.it/pub/Other/CPAN/CPAN/
2203 ftp://ftp.unipi.it/pub/mirror/perl/CPAN/
2204 ftp://cis.uniRoma2.it/CPAN/
2205 ftp://ftp.edisontel.it/pub/CPAN_Mirror/
5c5c2539 2206 http://cpan.flashnet.it/
5df44211 2207 ftp://ftp.flashnet.it/pub/CPAN/
4e860d0a 2208
5df44211 2209=item Latvia
4e860d0a 2210
5df44211 2211 http://kvin.lv/pub/CPAN/
4e860d0a 2212
5df44211 2213=item Lithuania
4e860d0a 2214
5df44211 2215 ftp://ftp.unix.lt/pub/CPAN/
4e860d0a 2216
5df44211 2217=item Netherlands
4e860d0a 2218
5df44211
JH
2219 ftp://download.xs4all.nl/pub/mirror/CPAN/
2220 ftp://ftp.nl.uu.net/pub/CPAN/
2221 ftp://ftp.nluug.nl/pub/languages/perl/CPAN/
2222 http://cpan.cybercomm.nl/
2223 ftp://mirror.cybercomm.nl/pub/CPAN
5c5c2539 2224 ftp://mirror.vuurwerk.nl/pub/CPAN/
5df44211
JH
2225 ftp://ftp.cpan.nl/pub/CPAN/
2226 http://ftp.easynet.nl/mirror/CPAN
2227 ftp://ftp.easynet.nl/mirror/CPAN
2228 http://archive.cs.uu.nl/mirror/CPAN/
2229 ftp://ftp.cs.uu.nl/mirror/CPAN/
4e860d0a 2230
5df44211
JH
2231=item Norway
2232
2233 ftp://ftp.uninett.no/pub/languages/perl/CPAN
2234 ftp://ftp.uit.no/pub/languages/perl/cpan/
2235
2236=item Poland
2237
639f8edf 2238 ftp://ftp.mega.net.pl/CPAN
5df44211
JH
2239 ftp://ftp.man.torun.pl/pub/doc/CPAN/
2240 ftp://sunsite.icm.edu.pl/pub/CPAN/
2241
2242=item Portugal
2243
2244 ftp://ftp.ua.pt/pub/CPAN/
2245 ftp://perl.di.uminho.pt/pub/CPAN/
2246 http://cpan.dei.uc.pt/
2247 ftp://ftp.dei.uc.pt/pub/CPAN
5c5c2539
JH
2248 ftp://ftp.nfsi.pt/pub/CPAN
2249 http://ftp.linux.pt/pub/mirrors/CPAN
2250 ftp://ftp.linux.pt/pub/mirrors/CPAN
5df44211
JH
2251 http://cpan.ip.pt/
2252 ftp://cpan.ip.pt/pub/cpan/
5c5c2539
JH
2253 http://cpan.telepac.pt/
2254 ftp://ftp.telepac.pt/pub/cpan/
4e860d0a 2255
5df44211 2256=item Romania
4e860d0a 2257
5c5c2539 2258 ftp://ftp.bio-net.ro/pub/CPAN
5df44211 2259 ftp://ftp.kappa.ro/pub/mirrors/ftp.perl.org/pub/CPAN/
7a142657 2260 ftp://ftp.lug.ro/CPAN
5c5c2539 2261 ftp://ftp.roedu.net/pub/CPAN/
5df44211 2262 ftp://ftp.dntis.ro/pub/cpan/
5c5c2539
JH
2263 ftp://ftp.iasi.roedu.net/pub/mirrors/ftp.cpan.org/
2264 http://cpan.ambra.ro/
2265 ftp://ftp.ambra.ro/pub/CPAN
5df44211
JH
2266 ftp://ftp.dnttm.ro/pub/CPAN/
2267 ftp://ftp.lasting.ro/pub/CPAN
2268 ftp://ftp.timisoara.roedu.net/mirrors/CPAN/
4e860d0a 2269
5df44211 2270=item Russia
4e860d0a 2271
5df44211
JH
2272 ftp://ftp.chg.ru/pub/lang/perl/CPAN/
2273 http://cpan.rinet.ru/
2274 ftp://cpan.rinet.ru/pub/mirror/CPAN/
2275 ftp://ftp.aha.ru/pub/CPAN/
7a142657 2276 ftp://ftp.corbina.ru/pub/CPAN/
5df44211
JH
2277 http://cpan.sai.msu.ru/
2278 ftp://ftp.sai.msu.su/pub/lang/perl/CPAN/
4e860d0a 2279
5df44211 2280=item Slovakia
4e860d0a 2281
5df44211 2282 ftp://ftp.cvt.stuba.sk/pub/CPAN/
4e860d0a 2283
5df44211 2284=item Slovenia
4e860d0a 2285
5df44211 2286 ftp://ftp.arnes.si/software/perl/CPAN/
4e860d0a 2287
5df44211 2288=item Spain
4e860d0a 2289
5df44211
JH
2290 http://cpan.imasd.elmundo.es/
2291 ftp://ftp.rediris.es/mirror/CPAN/
639f8edf 2292 ftp://ftp.ri.telefonica-data.net/CPAN
5df44211 2293 ftp://ftp.etse.urv.es/pub/perl/
4e860d0a 2294
5df44211 2295=item Sweden
4e860d0a 2296
5df44211
JH
2297 http://ftp.du.se/CPAN/
2298 ftp://ftp.du.se/pub/CPAN/
5c5c2539 2299 http://mirror.dataphone.se/CPAN
5df44211
JH
2300 ftp://mirror.dataphone.se/pub/CPAN
2301 ftp://ftp.sunet.se/pub/lang/perl/CPAN/
4e860d0a 2302
5df44211 2303=item Switzerland
4e860d0a 2304
7a142657
JH
2305 http://cpan.mirror.solnet.ch/
2306 ftp://ftp.solnet.ch/mirror/CPAN/
5df44211
JH
2307 ftp://ftp.danyk.ch/CPAN/
2308 ftp://sunsite.cnlab-switch.ch/mirror/CPAN/
4e860d0a 2309
5df44211 2310=item Turkey
4e860d0a 2311
5df44211
JH
2312 http://ftp.ulak.net.tr/perl/CPAN/
2313 ftp://ftp.ulak.net.tr/perl/CPAN
2314 ftp://sunsite.bilkent.edu.tr/pub/languages/CPAN/
37a78d01 2315
5df44211 2316=item Ukraine
37a78d01 2317
5df44211
JH
2318 http://cpan.org.ua/
2319 ftp://cpan.org.ua/
2320 ftp://ftp.perl.org.ua/pub/CPAN/
5c5c2539
JH
2321 http://no-more.kiev.ua/CPAN/
2322 ftp://no-more.kiev.ua/pub/CPAN/
37a78d01 2323
5df44211 2324=item United Kingdom
556e28cf 2325
5df44211
JH
2326 http://www.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN
2327 ftp://ftp.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN/
2328 http://cpan.teleglobe.net/
2329 ftp://cpan.teleglobe.net/pub/CPAN
5c5c2539
JH
2330 http://cpan.mirror.anlx.net/
2331 ftp://ftp.mirror.anlx.net/CPAN/
7a142657
JH
2332 http://cpan.etla.org/
2333 ftp://cpan.etla.org/pub/CPAN
5df44211
JH
2334 ftp://ftp.demon.co.uk/pub/CPAN/
2335 http://cpan.m.flirble.org/
2336 ftp://ftp.flirble.org/pub/languages/perl/CPAN/
2337 ftp://ftp.plig.org/pub/CPAN/
5c5c2539 2338 http://cpan.hambule.co.uk/
5df44211
JH
2339 http://cpan.mirrors.clockerz.net/
2340 ftp://ftp.clockerz.net/pub/CPAN/
2341 ftp://usit.shef.ac.uk/pub/packages/CPAN/
556e28cf 2342
4e860d0a
JH
2343=back
2344
2345=head2 North America
2346
2347=over 4
2348
5c5c2539
JH
2349=item Canada
2350
7a142657 2351=over 8
5c5c2539 2352
5df44211 2353=item Alberta
4e860d0a 2354
5c5c2539
JH
2355 http://cpan.sunsite.ualberta.ca/
2356 ftp://cpan.sunsite.ualberta.ca/pub/CPAN/
4e860d0a 2357
5df44211 2358=item Manitoba
4e860d0a 2359
5df44211
JH
2360 http://theoryx5.uwinnipeg.ca/pub/CPAN/
2361 ftp://theoryx5.uwinnipeg.ca/pub/CPAN/
4e860d0a 2362
5df44211 2363=item Nova Scotia
4e860d0a 2364
5df44211 2365 ftp://cpan.chebucto.ns.ca/pub/CPAN/
4e860d0a 2366
5df44211 2367=item Ontario
4e860d0a 2368
5c5c2539 2369 ftp://ftp.nrc.ca/pub/CPAN/
37a78d01 2370
7a142657
JH
2371=back
2372
5df44211 2373=item Mexico
37a78d01 2374
5df44211
JH
2375 http://cpan.azc.uam.mx
2376 ftp://cpan.azc.uam.mx/mirrors/CPAN
7a142657
JH
2377 http://www.cpan.unam.mx/
2378 ftp://ftp.unam.mx/pub/CPAN
5df44211
JH
2379 http://www.msg.com.mx/CPAN/
2380 ftp://ftp.msg.com.mx/pub/CPAN/
37a78d01 2381
5c5c2539 2382=item United States
556e28cf 2383
7a142657 2384=over 8
4e860d0a 2385
5df44211 2386=item Alabama
4e860d0a 2387
5df44211
JH
2388 http://mirror.hiwaay.net/CPAN/
2389 ftp://mirror.hiwaay.net/CPAN/
4e860d0a 2390
5df44211 2391=item California
4e860d0a 2392
5df44211
JH
2393 http://cpan.develooper.com/
2394 http://www.cpan.org/
2395 ftp://cpan.valueclick.com/pub/CPAN/
7a142657
JH
2396 http://www.mednor.net/ftp/pub/mirrors/CPAN/
2397 ftp://ftp.mednor.net/pub/mirrors/CPAN/
5df44211
JH
2398 http://mirrors.gossamer-threads.com/CPAN
2399 ftp://cpan.nas.nasa.gov/pub/perl/CPAN/
2400 http://mirrors.kernel.org/cpan/
2401 ftp://mirrors.kernel.org/pub/CPAN
7a142657
JH
2402 http://cpan-sj.viaverio.com/
2403 ftp://cpan-sj.viaverio.com/pub/CPAN/
5df44211
JH
2404 http://cpan.digisle.net/
2405 ftp://cpan.digisle.net/pub/CPAN
2406 http://www.perl.com/CPAN/
7a142657 2407 http://www.uberlan.net/CPAN
4e860d0a 2408
5df44211 2409=item Colorado
4e860d0a 2410
5df44211 2411 ftp://ftp.cs.colorado.edu/pub/perl/CPAN/
7a142657 2412 http://cpan.four10.com
4e860d0a 2413
5df44211 2414=item Delaware
4e860d0a 2415
5df44211
JH
2416 http://ftp.lug.udel.edu/pub/CPAN
2417 ftp://ftp.lug.udel.edu/pub/CPAN
4e860d0a 2418
5df44211 2419=item District of Columbia
4e860d0a 2420
5df44211 2421 ftp://ftp.dc.aleron.net/pub/CPAN/
4e860d0a 2422
5df44211 2423=item Florida
37a78d01 2424
5df44211
JH
2425 ftp://ftp.cise.ufl.edu/pub/mirrors/CPAN/
2426 http://mirror.csit.fsu.edu/pub/CPAN/
2427 ftp://mirror.csit.fsu.edu/pub/CPAN/
2428 http://cpan.mirrors.nks.net/
37a78d01 2429
5df44211 2430=item Indiana
4e860d0a 2431
5df44211
JH
2432 ftp://ftp.uwsg.iu.edu/pub/perl/CPAN/
2433 http://cpan.netnitco.net/
2434 ftp://cpan.netnitco.net/pub/mirrors/CPAN/
2435 http://archive.progeny.com/CPAN/
2436 ftp://archive.progeny.com/CPAN/
5c5c2539
JH
2437 http://fx.saintjoe.edu/pub/CPAN
2438 ftp://ftp.saintjoe.edu/pub/CPAN
5df44211
JH
2439 http://csociety-ftp.ecn.purdue.edu/pub/CPAN
2440 ftp://csociety-ftp.ecn.purdue.edu/pub/CPAN
4e860d0a 2441
5df44211 2442=item Kentucky
4e860d0a 2443
5df44211
JH
2444 http://cpan.uky.edu/
2445 ftp://cpan.uky.edu/pub/CPAN/
5c5c2539
JH
2446 http://slugsite.louisville.edu/cpan
2447 ftp://slugsite.louisville.edu/CPAN
4e860d0a 2448
5df44211 2449=item Massachusetts
4e860d0a 2450
5c5c2539
JH
2451 http://mirrors.towardex.com/CPAN
2452 ftp://mirrors.towardex.com/pub/CPAN
5df44211 2453 ftp://ftp.ccs.neu.edu/net/mirrors/ftp.funet.fi/pub/languages/perl/CPAN/
4e860d0a 2454
5df44211 2455=item Michigan
4e860d0a 2456
5df44211 2457 ftp://cpan.cse.msu.edu/
639f8edf
HS
2458 http://cpan.calvin.edu/pub/CPAN
2459 ftp://cpan.calvin.edu/pub/CPAN
4e860d0a 2460
5c5c2539
JH
2461=item Nevada
2462
2463 http://www.oss.redundant.com/pub/CPAN
2464 ftp://www.oss.redundant.com/pub/CPAN
2465
5df44211 2466=item New Jersey
4e860d0a 2467
5c5c2539 2468 http://ftp.cpanel.net/pub/CPAN/
5df44211
JH
2469 ftp://ftp.cpanel.net/pub/CPAN/
2470 http://cpan.teleglobe.net/
2471 ftp://cpan.teleglobe.net/pub/CPAN
4e860d0a 2472
5df44211 2473=item New York
4e860d0a 2474
5df44211 2475 http://cpan.belfry.net/
5c5c2539
JH
2476 http://cpan.erlbaum.net/
2477 ftp://cpan.erlbaum.net/
5df44211
JH
2478 http://cpan.thepirtgroup.com/
2479 ftp://cpan.thepirtgroup.com/
2480 ftp://ftp.stealth.net/pub/CPAN/
2481 http://www.rge.com/pub/languages/perl/
2482 ftp://ftp.rge.com/pub/languages/perl/
4e860d0a 2483
5df44211 2484=item North Carolina
4e860d0a 2485
7a142657
JH
2486 http://www.ibiblio.org/pub/languages/perl/CPAN
2487 ftp://ftp.ibiblio.org/pub/languages/perl/CPAN
5df44211 2488 ftp://ftp.duke.edu/pub/perl/
5c5c2539 2489 ftp://ftp.ncsu.edu/pub/mirror/CPAN/
4e860d0a 2490
5df44211 2491=item Oklahoma
4e860d0a 2492
5df44211 2493 ftp://ftp.ou.edu/mirrors/CPAN/
4e860d0a 2494
5df44211 2495=item Oregon
4e860d0a 2496
5df44211 2497 ftp://ftp.orst.edu/pub/CPAN
4e860d0a 2498
5df44211 2499=item Pennsylvania
4e860d0a 2500
5df44211
JH
2501 http://ftp.epix.net/CPAN/
2502 ftp://ftp.epix.net/pub/languages/perl/
2503 http://mirrors.phenominet.com/pub/CPAN/
2504 ftp://mirrors.phenominet.com/pub/CPAN/
2505 http://cpan.pair.com/
2506 ftp://cpan.pair.com/pub/CPAN/
2507 ftp://carroll.cac.psu.edu/pub/CPAN/
4e860d0a 2508
5df44211 2509=item Tennessee
4e860d0a 2510
5df44211 2511 ftp://ftp.sunsite.utk.edu/pub/CPAN/
4e860d0a 2512
5df44211 2513=item Texas
4e860d0a 2514
5df44211 2515 http://ftp.sedl.org/pub/mirrors/CPAN/
5c5c2539 2516 http://www.binarycode.org/cpan
5df44211 2517 ftp://mirror.telentente.com/pub/CPAN
5c5c2539 2518 http://mirrors.theonlinerecordstore.com/CPAN
4e860d0a 2519
5df44211 2520=item Utah
4e860d0a 2521
5df44211 2522 ftp://mirror.xmission.com/CPAN/
4e860d0a 2523
5df44211 2524=item Virginia
4e860d0a 2525
7a142657
JH
2526 http://cpan-du.viaverio.com/
2527 ftp://cpan-du.viaverio.com/pub/CPAN/
5df44211
JH
2528 http://mirrors.rcn.net/pub/lang/CPAN/
2529 ftp://mirrors.rcn.net/pub/lang/CPAN/
2530 http://perl.secsup.org/
2531 ftp://perl.secsup.org/pub/perl/
5c5c2539 2532 http://noc.cvaix.com/mirrors/CPAN/
4e860d0a 2533
5c5c2539 2534=item Washington
4e860d0a 2535
5df44211
JH
2536 http://cpan.llarian.net/
2537 ftp://cpan.llarian.net/pub/CPAN/
2538 http://cpan.mirrorcentral.com/
2539 ftp://ftp.mirrorcentral.com/pub/CPAN/
2540 ftp://ftp-mirror.internap.com/pub/CPAN/
556e28cf 2541
5df44211 2542=item Wisconsin
556e28cf 2543
5df44211
JH
2544 http://mirror.sit.wisc.edu/pub/CPAN/
2545 ftp://mirror.sit.wisc.edu/pub/CPAN/
7a142657
JH
2546 http://mirror.aphix.com/CPAN
2547 ftp://mirror.aphix.com/pub/CPAN
4e860d0a
JH
2548
2549=back
2550
5c5c2539
JH
2551=back
2552
4e860d0a
JH
2553=head2 Oceania
2554
2555=over 4
2556
5df44211 2557=item Australia
4e860d0a 2558
5df44211
JH
2559 http://ftp.planetmirror.com/pub/CPAN/
2560 ftp://ftp.planetmirror.com/pub/CPAN/
2561 ftp://mirror.aarnet.edu.au/pub/perl/CPAN/
2562 ftp://cpan.topend.com.au/pub/CPAN/
7a142657 2563 http://cpan.mirrors.ilisys.com.au
4e860d0a 2564
5df44211 2565=item New Zealand
556e28cf 2566
5df44211 2567 ftp://ftp.auckland.ac.nz/pub/perl/CPAN/
5c5c2539
JH
2568
2569=item United States
2570
2571 http://aniani.ifa.hawaii.edu/CPAN/
2572 ftp://aniani.ifa.hawaii.edu/CPAN/
4e860d0a
JH
2573
2574=back
2575
2576=head2 South America
2577
2578=over 4
2579
5df44211 2580=item Argentina
4e860d0a 2581
5df44211 2582 ftp://mirrors.bannerlandia.com.ar/mirrors/CPAN/
5c5c2539
JH
2583 http://www.linux.org.ar/mirrors/cpan
2584 ftp://ftp.linux.org.ar/mirrors/cpan
4e860d0a 2585
5df44211 2586=item Brazil
4e860d0a 2587
5df44211
JH
2588 ftp://cpan.pop-mg.com.br/pub/CPAN/
2589 ftp://ftp.matrix.com.br/pub/perl/CPAN/
5c5c2539
JH
2590 http://cpan.hostsul.com.br/
2591 ftp://cpan.hostsul.com.br/
4e860d0a 2592
5df44211 2593=item Chile
4e860d0a 2594
5df44211
JH
2595 http://cpan.netglobalis.net/
2596 ftp://cpan.netglobalis.net/pub/CPAN/
f102b883
TC
2597
2598=back
2599
5df44211
JH
2600=head2 RSYNC Mirrors
2601
7a142657
JH
2602 www.linux.org.ar::cpan
2603 theoryx5.uwinnipeg.ca::CPAN
2604 ftp.shellhung.org::CPAN
2605 rsync.nic.funet.fi::CPAN
2606 ftp.u-paris10.fr::CPAN
2607 mir1.ovh.net::CPAN
2608 rsync://ftp.crihan.fr::CPAN
2609 ftp.gwdg.de::FTP/languages/perl/CPAN/
2610 ftp.leo.org::CPAN
2611 ftp.cbn.net.id::CPAN
2612 rsync://ftp.heanet.ie/mirrors/ftp.perl.org/pub/CPAN
2613 ftp.iglu.org.il::CPAN
2614 gusp.dyndns.org::cpan
2615 ftp.kddlabs.co.jp::cpan
2616 ftp.ayamura.org::pub/CPAN/
2617 mirror.leafbug.org::CPAN
2618 rsync.en.com.sg::CPAN
2619 mirror.averse.net::cpan
2620 rsync.oss.eznetsols.org
2621 ftp.kr.FreeBSD.org::CPAN
2622 ftp.solnet.ch::CPAN
2623 cpan.cdpa.nsysu.edu.tw::CPAN
2624 cpan.teleglobe.net::CPAN
2625 rsync://rsync.mirror.anlx.net::CPAN
2626 ftp.sedl.org::cpan
2627 ibiblio.org::CPAN
2628 cpan-du.viaverio.com::CPAN
2629 aniani.ifa.hawaii.edu::CPAN
2630 archive.progeny.com::CPAN
2631 rsync://slugsite.louisville.edu::CPAN
2632 mirror.aphix.com::CPAN
2633 cpan.teleglobe.net::CPAN
2634 ftp.lug.udel.edu::cpan
2635 mirrors.kernel.org::mirrors/CPAN
2636 mirrors.phenominet.com::CPAN
2637 cpan.pair.com::CPAN
2638 cpan-sj.viaverio.com::CPAN
2639 mirror.csit.fsu.edu::CPAN
2640 csociety-ftp.ecn.purdue.edu::CPAN
5df44211 2641
f102b883 2642For an up-to-date listing of CPAN sites,
4e860d0a 2643see http://www.cpan.org/SITES or ftp://www.cpan.org/SITES .
f102b883
TC
2644
2645=head1 Modules: Creation, Use, and Abuse
2646
2647(The following section is borrowed directly from Tim Bunce's modules
2648file, available at your nearest CPAN site.)
2649
2650Perl implements a class using a package, but the presence of a
2651package doesn't imply the presence of a class. A package is just a
2652namespace. A class is a package that provides subroutines that can be
2653used as methods. A method is just a subroutine that expects, as its
2654first argument, either the name of a package (for "static" methods),
2655or a reference to something (for "virtual" methods).
2656
2657A module is a file that (by convention) provides a class of the same
2658name (sans the .pm), plus an import method in that class that can be
2659called to fetch exported symbols. This module may implement some of
2660its methods by loading dynamic C or C++ objects, but that should be
2661totally transparent to the user of the module. Likewise, the module
2662might set up an AUTOLOAD function to slurp in subroutine definitions on
2663demand, but this is also transparent. Only the F<.pm> file is required to
2e1d04bc 2664exist. See L<perlsub>, L<perltoot>, and L<AutoLoader> for details about
f102b883
TC
2665the AUTOLOAD mechanism.
2666
2667=head2 Guidelines for Module Creation
2668
2669=over 4
2670
4e860d0a
JH
2671=item *
2672
2673Do similar modules already exist in some form?
f102b883
TC
2674
2675If so, please try to reuse the existing modules either in whole or
2676by inheriting useful features into a new class. If this is not
2677practical try to get together with the module authors to work on
2678extending or enhancing the functionality of the existing modules.
2679A perfect example is the plethora of packages in perl4 for dealing
2680with command line options.
2681
2682If you are writing a module to expand an already existing set of
2683modules, please coordinate with the author of the package. It
2684helps if you follow the same naming scheme and module interaction
2685scheme as the original author.
2686
4e860d0a
JH
2687=item *
2688
2689Try to design the new module to be easy to extend and reuse.
f102b883 2690
9f1b1f2d
GS
2691Try to C<use warnings;> (or C<use warnings qw(...);>).
2692Remember that you can add C<no warnings qw(...);> to individual blocks
2e1d04bc 2693of code that need less warnings.
19799a22 2694
f102b883
TC
2695Use blessed references. Use the two argument form of bless to bless
2696into the class name given as the first parameter of the constructor,
2697e.g.,:
2698
2699 sub new {
2e1d04bc
JH
2700 my $class = shift;
2701 return bless {}, $class;
f102b883
TC
2702 }
2703
2704or even this if you'd like it to be used as either a static
2705or a virtual method.
2706
2707 sub new {
2e1d04bc
JH
2708 my $self = shift;
2709 my $class = ref($self) || $self;
2710 return bless {}, $class;
f102b883
TC
2711 }
2712
2713Pass arrays as references so more parameters can be added later
2714(it's also faster). Convert functions into methods where
2715appropriate. Split large methods into smaller more flexible ones.
2716Inherit methods from other modules if appropriate.
2717
2718Avoid class name tests like: C<die "Invalid" unless ref $ref eq 'FOO'>.
19799a22 2719Generally you can delete the C<eq 'FOO'> part with no harm at all.
f102b883
TC
2720Let the objects look after themselves! Generally, avoid hard-wired
2721class names as far as possible.
2722
c47ff5f1
GS
2723Avoid C<< $r->Class::func() >> where using C<@ISA=qw(... Class ...)> and
2724C<< $r->func() >> would work (see L<perlbot> for more details).
f102b883
TC
2725
2726Use autosplit so little used or newly added functions won't be a
5a964f20 2727burden to programs that don't use them. Add test functions to
f102b883
TC
2728the module after __END__ either using AutoSplit or by saying:
2729
2730 eval join('',<main::DATA>) || die $@ unless caller();
2731
2732Does your module pass the 'empty subclass' test? If you say
19799a22 2733C<@SUBCLASS::ISA = qw(YOURCLASS);> your applications should be able
f102b883
TC
2734to use SUBCLASS in exactly the same way as YOURCLASS. For example,
2735does your application still work if you change: C<$obj = new YOURCLASS;>
2736into: C<$obj = new SUBCLASS;> ?
2737
2738Avoid keeping any state information in your packages. It makes it
2739difficult for multiple other packages to use yours. Keep state
2740information in objects.
2741
2e1d04bc 2742Always use B<-w>.
19799a22
GS
2743
2744Try to C<use strict;> (or C<use strict qw(...);>).
f102b883 2745Remember that you can add C<no strict qw(...);> to individual blocks
2e1d04bc 2746of code that need less strictness.
19799a22 2747
2e1d04bc 2748Always use B<-w>.
19799a22 2749
f102b883
TC
2750Follow the guidelines in the perlstyle(1) manual.
2751
19799a22
GS
2752Always use B<-w>.
2753
4e860d0a
JH
2754=item *
2755
2756Some simple style guidelines
f102b883 2757
5a964f20 2758The perlstyle manual supplied with Perl has many helpful points.
f102b883
TC
2759
2760Coding style is a matter of personal taste. Many people evolve their
2761style over several years as they learn what helps them write and
2762maintain good code. Here's one set of assorted suggestions that
2763seem to be widely used by experienced developers:
2764
2765Use underscores to separate words. It is generally easier to read
2766$var_names_like_this than $VarNamesLikeThis, especially for
2767non-native speakers of English. It's also a simple rule that works
2768consistently with VAR_NAMES_LIKE_THIS.
2769
2770Package/Module names are an exception to this rule. Perl informally
2771reserves lowercase module names for 'pragma' modules like integer
2772and strict. Other modules normally begin with a capital letter and
2773use mixed case with no underscores (need to be short and portable).
2774
2775You may find it helpful to use letter case to indicate the scope
2776or nature of a variable. For example:
2777
5a964f20 2778 $ALL_CAPS_HERE constants only (beware clashes with Perl vars)
f102b883
TC
2779 $Some_Caps_Here package-wide global/static
2780 $no_caps_here function scope my() or local() variables
2781
2782Function and method names seem to work best as all lowercase.
c47ff5f1 2783e.g., C<< $obj->as_string() >>.
f102b883
TC
2784
2785You can use a leading underscore to indicate that a variable or
2786function should not be used outside the package that defined it.
2787
4e860d0a
JH
2788=item *
2789
2790Select what to export.
f102b883
TC
2791
2792Do NOT export method names!
2793
2794Do NOT export anything else by default without a good reason!
2795
2796Exports pollute the namespace of the module user. If you must
2797export try to use @EXPORT_OK in preference to @EXPORT and avoid
2798short or common names to reduce the risk of name clashes.
2799
2800Generally anything not exported is still accessible from outside the
c47ff5f1 2801module using the ModuleName::item_name (or C<< $blessed_ref->method >>)
f102b883
TC
2802syntax. By convention you can use a leading underscore on names to
2803indicate informally that they are 'internal' and not for public use.
2804
2805(It is actually possible to get private functions by saying:
2806C<my $subref = sub { ... }; &$subref;>. But there's no way to call that
2807directly as a method, because a method must have a name in the symbol
2808table.)
2809
2810As a general rule, if the module is trying to be object oriented
2811then export nothing. If it's just a collection of functions then
2812@EXPORT_OK anything but use @EXPORT with caution.
2813
4e860d0a
JH
2814=item *
2815
2816Select a name for the module.
f102b883
TC
2817
2818This name should be as descriptive, accurate, and complete as
2819possible. Avoid any risk of ambiguity. Always try to use two or
2820more whole words. Generally the name should reflect what is special
2821about what the module does rather than how it does it. Please use
2822nested module names to group informally or categorize a module.
2823There should be a very good reason for a module not to have a nested name.
2824Module names should begin with a capital letter.
2825
2826Having 57 modules all called Sort will not make life easy for anyone
2827(though having 23 called Sort::Quick is only marginally better :-).
2828Imagine someone trying to install your module alongside many others.
2829If in any doubt ask for suggestions in comp.lang.perl.misc.
2830
2831If you are developing a suite of related modules/classes it's good
2832practice to use nested classes with a common prefix as this will
2833avoid namespace clashes. For example: Xyz::Control, Xyz::View,
2834Xyz::Model etc. Use the modules in this list as a naming guide.
2835
2836If adding a new module to a set, follow the original author's
2837standards for naming modules and the interface to methods in
2838those modules.
2839
165c0277
JH
2840If developing modules for private internal or project specific use,
2841that will never be released to the public, then you should ensure
2842that their names will not clash with any future public module. You
2843can do this either by using the reserved Local::* category or by
2844using a category name that includes an underscore like Foo_Corp::*.
2845
f102b883
TC
2846To be portable each component of a module name should be limited to
284711 characters. If it might be used on MS-DOS then try to ensure each is
2848unique in the first 8 characters. Nested modules make this easier.
2849
4e860d0a
JH
2850=item *
2851
2852Have you got it right?
f102b883
TC
2853
2854How do you know that you've made the right decisions? Have you
2855picked an interface design that will cause problems later? Have
2856you picked the most appropriate name? Do you have any questions?
2857
2858The best way to know for sure, and pick up many helpful suggestions,
2859is to ask someone who knows. Comp.lang.perl.misc is read by just about
2860all the people who develop modules and it's the best place to ask.
2861
2862All you need to do is post a short summary of the module, its
2863purpose and interfaces. A few lines on each of the main methods is
2864probably enough. (If you post the whole module it might be ignored
2865by busy people - generally the very people you want to read it!)
2866
2867Don't worry about posting if you can't say when the module will be
2868ready - just say so in the message. It might be worth inviting
2869others to help you, they may be able to complete it for you!
2870
4e860d0a
JH
2871=item *
2872
2873README and other Additional Files.
f102b883
TC
2874
2875It's well known that software developers usually fully document the
2876software they write. If, however, the world is in urgent need of
2877your software and there is not enough time to write the full
2878documentation please at least provide a README file containing:
2879
2880=over 10
2881
2882=item *
4e860d0a 2883
f102b883
TC
2884A description of the module/package/extension etc.
2885
2886=item *
4e860d0a 2887
f102b883
TC
2888A copyright notice - see below.
2889
2890=item *
4e860d0a 2891
f102b883
TC
2892Prerequisites - what else you may need to have.
2893
2894=item *
4e860d0a 2895
f102b883
TC
2896How to build it - possible changes to Makefile.PL etc.
2897
2898=item *
4e860d0a 2899
f102b883
TC
2900How to install it.
2901
2902=item *
4e860d0a 2903
f102b883
TC
2904Recent changes in this release, especially incompatibilities
2905
2906=item *
4e860d0a 2907
f102b883
TC
2908Changes / enhancements you plan to make in the future.
2909
2910=back
2911
2912If the README file seems to be getting too large you may wish to
2913split out some of the sections into separate files: INSTALL,
2914Copying, ToDo etc.
2915
2916=over 4
2917
37a78d01 2918=item *
f102b883 2919
37a78d01 2920Adding a Copyright Notice.
4e860d0a 2921
f102b883
TC
2922How you choose to license your work is a personal decision.
2923The general mechanism is to assert your Copyright and then make
2924a declaration of how others may copy/use/modify your work.
2925
2a551100
JH
2926Perl, for example, is supplied with two types of licence: The GNU GPL
2927and The Artistic Licence (see the files README, Copying, and Artistic,
2928or L<perlgpl> and L<perlartistic>). Larry has good reasons for NOT
2929just using the GNU GPL.
f102b883
TC
2930
2931My personal recommendation, out of respect for Larry, Perl, and the
5a964f20 2932Perl community at large is to state something simply like:
f102b883
TC
2933
2934 Copyright (c) 1995 Your Name. All rights reserved.
2935 This program is free software; you can redistribute it and/or
2936 modify it under the same terms as Perl itself.
2937
2938This statement should at least appear in the README file. You may
2939also wish to include it in a Copying file and your source files.
2940Remember to include the other words in addition to the Copyright.
2941
4e860d0a
JH
2942=item *
2943
2944Give the module a version/issue/release number.
f102b883
TC
2945
2946To be fully compatible with the Exporter and MakeMaker modules you
2947should store your module's version number in a non-my package
2948variable called $VERSION. This should be a floating point
2949number with at least two digits after the decimal (i.e., hundredths,
2950e.g, C<$VERSION = "0.01">). Don't use a "1.3.2" style version.
19799a22 2951See L<Exporter> for details.
f102b883
TC
2952
2953It may be handy to add a function or method to retrieve the number.
2954Use the number in announcements and archive file names when
2955releasing the module (ModuleName-1.02.tar.Z).
2956See perldoc ExtUtils::MakeMaker.pm for details.
2957
4e860d0a
JH
2958=item *
2959
2960How to release and distribute a module.
f102b883
TC
2961
2962It's good idea to post an announcement of the availability of your
2963module (or the module itself if small) to the comp.lang.perl.announce
2964Usenet newsgroup. This will at least ensure very wide once-off
2965distribution.
2966
2e1d04bc 2967If possible, register the module with CPAN. You should
f102b883
TC
2968include details of its location in your announcement.
2969
2970Some notes about ftp archives: Please use a long descriptive file
5a964f20 2971name that includes the version number. Most incoming directories
f102b883
TC
2972will not be readable/listable, i.e., you won't be able to see your
2973file after uploading it. Remember to send your email notification
2974message as soon as possible after uploading else your file may get
2975deleted automatically. Allow time for the file to be processed
2976and/or check the file has been processed before announcing its
2977location.
2978
2979FTP Archives for Perl Modules:
2980
6cecdcac 2981Follow the instructions and links on:
f102b883 2982
4e860d0a
JH
2983 http://www.cpan.org/modules/00modlist.long.html
2984 http://www.cpan.org/modules/04pause.html
f102b883
TC
2985
2986or upload to one of these sites:
2987
6cecdcac
GS
2988 https://pause.kbx.de/pause/
2989 http://pause.perl.org/pause/
f102b883 2990
6cecdcac 2991and notify <modules@perl.org>.
f102b883
TC
2992
2993By using the WWW interface you can ask the Upload Server to mirror
2994your modules from your ftp or WWW site into your own directory on
2995CPAN!
2996
2997Please remember to send me an updated entry for the Module list!
2998
4e860d0a
JH
2999=item *
3000
3001Take care when changing a released module.
f102b883 3002
7b8d334a
GS
3003Always strive to remain compatible with previous released versions.
3004Otherwise try to add a mechanism to revert to the
19799a22 3005old behavior if people rely on it. Document incompatible changes.
f102b883
TC
3006
3007=back
3008
3009=back
3010
3011=head2 Guidelines for Converting Perl 4 Library Scripts into Modules
3012
3013=over 4
3014
4e860d0a
JH
3015=item *
3016
3017There is no requirement to convert anything.
f102b883
TC
3018
3019If it ain't broke, don't fix it! Perl 4 library scripts should
3020continue to work with no problems. You may need to make some minor
3021changes (like escaping non-array @'s in double quoted strings) but
3022there is no need to convert a .pl file into a Module for just that.
3023
4e860d0a
JH
3024=item *
3025
3026Consider the implications.
f102b883 3027
5a964f20 3028All Perl applications that make use of the script will need to
f102b883
TC
3029be changed (slightly) if the script is converted into a module. Is
3030it worth it unless you plan to make other changes at the same time?
3031
4e860d0a
JH
3032=item *
3033
3034Make the most of the opportunity.
f102b883
TC
3035
3036If you are going to convert the script to a module you can use the
19799a22
GS
3037opportunity to redesign the interface. The guidelines for module
3038creation above include many of the issues you should consider.
f102b883 3039
4e860d0a
JH
3040=item *
3041
3042The pl2pm utility will get you started.
f102b883
TC
3043
3044This utility will read *.pl files (given as parameters) and write
3045corresponding *.pm files. The pl2pm utilities does the following:
3046
3047=over 10
3048
3049=item *
4e860d0a 3050
f102b883
TC
3051Adds the standard Module prologue lines
3052
3053=item *
4e860d0a 3054
f102b883
TC
3055Converts package specifiers from ' to ::
3056
3057=item *
4e860d0a 3058
f102b883
TC
3059Converts die(...) to croak(...)
3060
3061=item *
4e860d0a 3062
f102b883
TC
3063Several other minor changes
3064
3065=back
3066
3067Being a mechanical process pl2pm is not bullet proof. The converted
3068code will need careful checking, especially any package statements.
3069Don't delete the original .pl file till the new .pm one works!
3070
3071=back
3072
3073=head2 Guidelines for Reusing Application Code
3074
3075=over 4
3076
4e860d0a 3077=item *
551e1d92
RB
3078
3079Complete applications rarely belong in the Perl Module Library.
f102b883 3080
4e860d0a 3081=item *
551e1d92
RB
3082
3083Many applications contain some Perl code that could be reused.
f102b883
TC
3084
3085Help save the world! Share your code in a form that makes it easy
3086to reuse.
3087
4e860d0a 3088=item *
551e1d92
RB
3089
3090Break-out the reusable code into one or more separate module files.
f102b883 3091
4e860d0a 3092=item *
551e1d92
RB
3093
3094Take the opportunity to reconsider and redesign the interfaces.
3095
4e860d0a 3096=item *
f102b883 3097
551e1d92 3098In some cases the 'application' can then be reduced to a small
f102b883
TC
3099
3100fragment of code built on top of the reusable modules. In these cases
3101the application could invoked as:
3102
5a964f20 3103 % perl -e 'use Module::Name; method(@ARGV)' ...
f102b883 3104or
5a964f20 3105 % perl -mModule::Name ... (in perl5.002 or higher)
f102b883
TC
3106
3107=back
3108
3109=head1 NOTE
3110
3111Perl does not enforce private and public parts of its modules as you may
3112have been used to in other languages like C++, Ada, or Modula-17. Perl
3113doesn't have an infatuation with enforced privacy. It would prefer
3114that you stayed out of its living room because you weren't invited, not
3115because it has a shotgun.
3116
3117The module and its user have a contract, part of which is common law,
3118and part of which is "written". Part of the common law contract is
3119that a module doesn't pollute any namespace it wasn't asked to. The
3120written contract for the module (A.K.A. documentation) may make other
3121provisions. But then you know when you C<use RedefineTheWorld> that
3122you're redefining the world and willing to take the consequences.