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