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
1=for maintainers
2Generated by perlmodlib.PL -- DO NOT EDIT!
3
4=head1 NAME
5
6perlmodlib - constructing new Perl modules and finding existing ones
7
8=head1 THE PERL MODULE LIBRARY
9
10Many modules are included in the Perl distribution. These are described
11below, and all end in F<.pm>. You may discover compiled library
12files (usually ending in F<.so>) or small pieces of modules to be
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.
23
24=head2 Pragmatic Modules
25
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:
31
32 no integer;
33 no strict 'refs';
34 no warnings;
35
36which lasts until the end of that BLOCK.
37
38Some pragmas are lexically scoped--typically those that affect the
39C<$^H> hints variable. Others affect the current package instead,
40like C<use vars> and C<use subs>, which allow you to predeclare a
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>.
45
46The following pragmas are defined (and have their own documentation).
47
48=over 12
49
50=item assertions
51
52Select assertions in blocks of code
53
54=item assertions::activate
55
56Activate assertions
57
58=item assertions::compat
59
60Assertions for pre-5.9 versions of perl
61
62=item attributes
63
64Get/set subroutine or variable attributes
65
66=item attrs
67
68Set/get attributes of a subroutine (deprecated)
69
70=item autouse
71
72Postpone load of modules until a function is used
73
74=item base
75
76Establish IS-A relationship with base classes at compile time
77
78=item bigint
79
80Transparent BigInteger support for Perl
81
82=item bignum
83
84Transparent BigNumber support for Perl
85
86=item bigrat
87
88Transparent BigNumber/BigRational support for Perl
89
90=item blib
91
92Use MakeMaker's uninstalled version of a package
93
94=item bytes
95
96Force byte semantics rather than character semantics
97
98=item charnames
99
100Define character names for C<\N{named}> string literal escapes
101
102=item constant
103
104Declare constants
105
106=item diagnostics
107
108Produce verbose warning diagnostics
109
110=item encoding
111
112Allows you to write your script in non-ascii or non-utf8
113
114=item encoding::warnings
115
116Warn on implicit encoding conversions
117
118=item feature
119
120Enable new syntactic features
121
122=item fields
123
124Compile-time class fields
125
126=item filetest
127
128Control the filetest permission operators
129
130=item if
131
132C<use> a Perl module if a condition holds
133
134=item integer
135
136Use integer arithmetic instead of floating point
137
138=item less
139
140Request less of something from the compiler
141
142=item lib
143
144Manipulate @INC at compile time
145
146=item locale
147
148Use and avoid POSIX locales for built-in operations
149
150=item open
151
152Set default PerlIO layers for input and output
153
154=item ops
155
156Restrict unsafe operations when compiling
157
158=item overload
159
160Package for overloading Perl operations
161
162=item re
163
164Alter regular expression behaviour
165
166=item sigtrap
167
168Enable simple signal handling
169
170=item sort
171
172Control sort() behaviour
173
174=item strict
175
176Restrict unsafe constructs
177
178=item subs
179
180Predeclare sub names
181
182=item threads
183
184Perl interpreter-based threads
185
186=item threads::shared
187
188Perl extension for sharing data structures between threads
189
190=item utf8
191
192Enable/disable UTF-8 (or UTF-EBCDIC) in source code
193
194=item vars
195
196Predeclare global variable names (obsolete)
197
198=item version
199
200Perl extension for Version Objects
201
202=item vmsish
203
204Control VMS-specific language features
205
206=item warnings
207
208Control optional warnings
209
210=item warnings::register
211
212Warnings import function
213
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
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
226=over 12
227
228=item AnyDBM_File
229
230Provide framework for multiple DBMs
231
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
240=item Attribute::Handlers
241
242Simpler definition of attribute handlers
243
244=item AutoLoader
245
246Load subroutines only on demand
247
248=item AutoSplit
249
250Split a package for autoloading
251
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
320=item Benchmark
321
322Benchmark running times of Perl code
323
324=item ByteLoader
325
326Load byte compiled perl code
327
328=item CGI
329
330Simple Common Gateway Interface Class
331
332=item CGI::Apache
333
334Backward compatibility module for CGI.pm
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
348=item CGI::Pretty
349
350Module to produce nicely formatted HTML code
351
352=item CGI::Push
353
354Simple Interface to Server Push
355
356=item CGI::Switch
357
358Backward compatibility module for defunct CGI::Switch
359
360=item CGI::Util
361
362Internal utilities used by CGI module
363
364=item CPAN
365
366Query, download and build perl modules from CPAN sites
367
368=item CPAN::FirstTime
369
370Utility for CPAN::Config file Initialization
371
372=item CPAN::Nox
373
374Wrapper around CPAN.pm without using any XS module
375
376=item CPAN::Version
377
378Utility functions to compare CPAN versions
379
380=item Carp
381
382Warn of errors (from perspective of caller)
383
384=item Carp::Heavy
385
386Heavy machinery, no user serviceable parts inside
387
388=item Class::ISA
389
390Report the search path for a class's ISA tree
391
392=item Class::Struct
393
394Declare struct-like datatypes as Perl classes
395
396=item Compress::Raw::Zlib
397
398Low-Level Interface to zlib compression library
399
400=item Compress::Zlib
401
402Interface to zlib compression library
403
404=item Config
405
406Access Perl configuration information
407
408=item Cwd
409
410Get pathname of current working directory
411
412=item DB
413
414Programmatic interface to the Perl debugging API (draft, subject to
415
416=item DBM_Filter
417
418Filter DBM keys/values
419
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
440=item DB_File
441
442Perl5 access to Berkeley DB version 1.x
443
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
456=item Devel::SelfStubber
457
458Generate stubs for a SelfLoading module
459
460=item Digest
461
462Modules that calculate message digests
463
464=item Digest::MD5
465
466Perl interface to the MD5 Algorithm
467
468=item Digest::SHA
469
470Perl extension for SHA-1/224/256/384/512
471
472=item Digest::base
473
474Digest base class
475
476=item Digest::file
477
478Calculate digests of files
479
480=item DirHandle
481
482Supply object methods for directory handles
483
484=item Dumpvalue
485
486Provides screen dump of Perl data.
487
488=item DynaLoader
489
490Dynamically load C libraries into Perl code
491
492=item Encode
493
494Character encodings
495
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
580=item Encode::Unicode::UTF7
581
582UTF-7 encoding
583
584=item English
585
586Use nice English (or awk) names for ugly punctuation variables
587
588=item Env
589
590Perl module that imports environment variables as scalars or arrays
591
592=item Errno
593
594System errno constants
595
596=item Exporter
597
598Implements default import method for modules
599
600=item Exporter::Heavy
601
602Exporter guts
603
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
612=item ExtUtils::Command
613
614Utilities to replace common UNIX commands in Makefiles etc.
615
616=item ExtUtils::Command::MM
617
618Commands for the MM's to use in Makefiles
619
620=item ExtUtils::Constant
621
622Generate XS code to import C header constants
623
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
636=item ExtUtils::Embed
637
638Utilities for embedding Perl in C/C++ applications
639
640=item ExtUtils::Install
641
642Install files from here to there
643
644=item ExtUtils::Installed
645
646Inventory management of installed modules
647
648=item ExtUtils::Liblist
649
650Determine libraries to use and how to use them
651
652=item ExtUtils::MM
653
654OS adjusted ExtUtils::MakeMaker subclass
655
656=item ExtUtils::MM_AIX
657
658AIX specific subclass of ExtUtils::MM_Unix
659
660=item ExtUtils::MM_Any
661
662Platform-agnostic MM methods
663
664=item ExtUtils::MM_BeOS
665
666Methods to override UN*X behaviour in ExtUtils::MakeMaker
667
668=item ExtUtils::MM_Cygwin
669
670Methods to override UN*X behaviour in ExtUtils::MakeMaker
671
672=item ExtUtils::MM_DOS
673
674DOS specific subclass of ExtUtils::MM_Unix
675
676=item ExtUtils::MM_MacOS
677
678Once produced Makefiles for MacOS Classic
679
680=item ExtUtils::MM_NW5
681
682Methods to override UN*X behaviour in ExtUtils::MakeMaker
683
684=item ExtUtils::MM_OS2
685
686Methods to override UN*X behaviour in ExtUtils::MakeMaker
687
688=item ExtUtils::MM_QNX
689
690QNX specific subclass of ExtUtils::MM_Unix
691
692=item ExtUtils::MM_UWIN
693
694U/WIN specific subclass of ExtUtils::MM_Unix
695
696=item ExtUtils::MM_Unix
697
698Methods used by ExtUtils::MakeMaker
699
700=item ExtUtils::MM_VMS
701
702Methods to override UN*X behaviour in ExtUtils::MakeMaker
703
704=item ExtUtils::MM_VOS
705
706VOS specific subclass of ExtUtils::MM_Unix
707
708=item ExtUtils::MM_Win32
709
710Methods to override UN*X behaviour in ExtUtils::MakeMaker
711
712=item ExtUtils::MM_Win95
713
714Method to customize MakeMaker for Win9X
715
716=item ExtUtils::MY
717
718ExtUtils::MakeMaker subclass for customization
719
720=item ExtUtils::MakeMaker
721
722Create a module Makefile
723
724=item ExtUtils::MakeMaker::Config
725
726Wrapper around Config.pm
727
728=item ExtUtils::MakeMaker::FAQ
729
730Frequently Asked Questions About MakeMaker
731
732=item ExtUtils::MakeMaker::Tutorial
733
734Writing a module with MakeMaker
735
736=item ExtUtils::MakeMaker::bytes
737
738Version-agnostic bytes.pm
739
740=item ExtUtils::MakeMaker::vmsish
741
742Platform-agnostic vmsish.pm
743
744=item ExtUtils::Manifest
745
746Utilities to write and check a MANIFEST file
747
748=item ExtUtils::Mkbootstrap
749
750Make a bootstrap file for use by DynaLoader
751
752=item ExtUtils::Mksymlists
753
754Write linker options files for dynamic extension
755
756=item ExtUtils::Packlist
757
758Manage .packlist files
759
760=item ExtUtils::ParseXS
761
762Converts Perl XS code into C code
763
764=item ExtUtils::testlib
765
766Add blib/* directories to @INC
767
768=item Fatal
769
770Replace functions with equivalents which succeed or die
771
772=item Fcntl
773
774Load the C Fcntl.h defines
775
776=item File::Basename
777
778Parse file paths into directory, filename and suffix.
779
780=item File::CheckTree
781
782Run many filetest checks on a tree
783
784=item File::Compare
785
786Compare files or filehandles
787
788=item File::Copy
789
790Copy files or filehandles
791
792=item File::DosGlob
793
794DOS like globbing and then some
795
796=item File::Find
797
798Traverse a directory tree.
799
800=item File::Glob
801
802Perl extension for BSD glob routine
803
804=item File::GlobMapper
805
806Extend File Glob to Allow Input and Output Files
807
808=item File::Path
809
810Create or remove directory trees
811
812=item File::Spec
813
814Portably perform operations on file names
815
816=item File::Spec::Cygwin
817
818Methods for Cygwin file specs
819
820=item File::Spec::Epoc
821
822Methods for Epoc file specs
823
824=item File::Spec::Functions
825
826Portably perform operations on file names
827
828=item File::Spec::Mac
829
830File::Spec for Mac OS (Classic)
831
832=item File::Spec::OS2
833
834Methods for OS/2 file specs
835
836=item File::Spec::Unix
837
838File::Spec for Unix, base for other File::Spec modules
839
840=item File::Spec::VMS
841
842Methods for VMS file specs
843
844=item File::Spec::Win32
845
846Methods for Win32 file specs
847
848=item File::Temp
849
850Return name and handle of a temporary file safely
851
852=item File::stat
853
854By-name interface to Perl's built-in stat() functions
855
856=item FileCache
857
858Keep more files open than the system permits
859
860=item FileHandle
861
862Supply object methods for filehandles
863
864=item Filter::Simple
865
866Simplified source filtering
867
868=item Filter::Util::Call
869
870Perl Source Filter Utility Module
871
872=item FindBin
873
874Locate directory of original perl script
875
876=item GDBM_File
877
878Perl5 access to the gdbm library.
879
880=item Getopt::Long
881
882Extended processing of command line options
883
884=item Getopt::Std
885
886Process single-character switches with switch clustering
887
888=item Hash::Util
889
890A selection of general-utility hash subroutines
891
892=item Hash::Util::FieldHash
893
894Associate references with data
895
896=item I18N::Collate
897
898Compare 8-bit scalar data according to the current locale
899
900=item I18N::LangTags
901
902Functions for dealing with RFC3066-style language tags
903
904=item I18N::LangTags::Detect
905
906Detect the user's language preferences
907
908=item I18N::LangTags::List
909
910Tags and names for human languages
911
912=item I18N::Langinfo
913
914Query locale information
915
916=item IO
917
918Load various IO modules
919
920=item IO::Compress::Base
921
922Base Class for IO::Compress modules
923
924=item IO::Compress::Deflate
925
926Write RFC 1950 files/buffers
927
928=item IO::Compress::Gzip
929
930Write RFC 1952 files/buffers
931
932=item IO::Compress::RawDeflate
933
934Write RFC 1951 files/buffers
935
936=item IO::Compress::Zip
937
938Write zip files/buffers
939
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
980=item IO::Uncompress::AnyInflate
981
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
991
992=item IO::Uncompress::Gunzip
993
994Read RFC 1952 files/buffers
995
996=item IO::Uncompress::Inflate
997
998Read RFC 1950 files/buffers
999
1000=item IO::Uncompress::RawInflate
1001
1002Read RFC 1951 files/buffers
1003
1004=item IO::Uncompress::Unzip
1005
1006Read zip files/buffers
1007
1008=item IO::Zlib
1009
1010IO:: style interface to L<Compress::Zlib>
1011
1012=item IPC::Open2
1013
1014Open a process for both reading and writing
1015
1016=item IPC::Open3
1017
1018Open a process for reading, writing, and error handling
1019
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
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
1052=item Locale::Maketext
1053
1054Framework for localization
1055
1056=item Locale::Maketext::TPJ13
1057
1058Article about software localization
1059
1060=item Locale::Script
1061
1062ISO codes for script identification (ISO 15924)
1063
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
1072=item Math::BigFloat
1073
1074Arbitrary size floating point math package
1075
1076=item Math::BigInt
1077
1078Arbitrary size integer/float math package
1079
1080=item Math::BigInt::Calc
1081
1082Pure Perl module to support Math::BigInt
1083
1084=item Math::BigInt::CalcEmu
1085
1086Emulate low-level math with BigInt code
1087
1088=item Math::BigInt::FastCalc
1089
1090Math::BigInt::Calc with some XS for more speed
1091
1092=item Math::BigRat
1093
1094Arbitrary big rational numbers
1095
1096=item Math::Complex
1097
1098Complex numbers and associated mathematical functions
1099
1100=item Math::Trig
1101
1102Trigonometric functions
1103
1104=item Memoize
1105
1106Make functions faster by trading space for time
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
1132=item Memoize::Storable
1133
1134Store Memoized data in Storable database
1135
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
1236=item Module::CoreList
1237
1238What modules shipped with versions of perl
1239
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
1248=item NDBM_File
1249
1250Tied access to ndbm files
1251
1252=item NEXT
1253
1254Provide a pseudo-class NEXT (et al) that allows method redispatch
1255
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
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
1280=item Net::POP3
1281
1282Post Office Protocol 3 Client class (RFC1939)
1283
1284=item Net::Ping
1285
1286Check a remote host for reachability
1287
1288=item Net::SMTP
1289
1290Simple Mail Transfer Protocol Client
1291
1292=item Net::Time
1293
1294Time and daytime network client interface
1295
1296=item Net::hostent
1297
1298By-name interface to Perl's built-in gethost*() functions
1299
1300=item Net::libnetFAQ
1301
1302Libnet Frequently Asked Questions
1303
1304=item Net::netent
1305
1306By-name interface to Perl's built-in getnet*() functions
1307
1308=item Net::protoent
1309
1310By-name interface to Perl's built-in getproto*() functions
1311
1312=item Net::servent
1313
1314By-name interface to Perl's built-in getserv*() functions
1315
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
1332=item Package::Constants
1333
1334List all constants declared in a package
1335
1336=item PerlIO
1337
1338On demand loader for PerlIO layers and root of PerlIO::* name space
1339
1340=item PerlIO::encoding
1341
1342Encoding layer
1343
1344=item PerlIO::scalar
1345
1346In-memory IO, scalar IO
1347
1348=item PerlIO::via
1349
1350Helper class for PerlIO layers implemented in perl
1351
1352=item PerlIO::via::QuotedPrint
1353
1354PerlIO layer for quoted-printable strings
1355
1356=item Pod::Checker
1357
1358Check pod documents for syntax errors
1359
1360=item Pod::Escapes
1361
1362For resolving Pod EE<lt>...E<gt> sequences
1363
1364=item Pod::Find
1365
1366Find POD documents in directory trees
1367
1368=item Pod::Functions
1369
1370Group Perl's functions a la perlfunc.pod
1371
1372=item Pod::Html
1373
1374Module to convert pod files to HTML
1375
1376=item Pod::InputObjects
1377
1378Objects representing POD input paragraphs, commands, etc.
1379
1380=item Pod::LaTeX
1381
1382Convert Pod data to formatted Latex
1383
1384=item Pod::Man
1385
1386Convert POD data to formatted *roff input
1387
1388=item Pod::ParseLink
1389
1390Parse an LE<lt>E<gt> formatting code in POD text
1391
1392=item Pod::ParseUtils
1393
1394Helpers for POD parsing and conversion
1395
1396=item Pod::Parser
1397
1398Base class for creating POD filters and translators
1399
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
1436=item Pod::Plainer
1437
1438Perl extension for converting Pod to old style Pod.
1439
1440=item Pod::Select
1441
1442Extract selected sections of POD from input
1443
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
1528=item Pod::Text
1529
1530Convert POD data to formatted ASCII text
1531
1532=item Pod::Text::Color
1533
1534Convert POD data to formatted color ASCII text
1535
1536=item Pod::Text::Overstrike
1537
1538Convert POD data to formatted overstrike text
1539
1540=item Pod::Text::Termcap
1541
1542Convert POD data to ASCII text with format escapes
1543
1544=item Pod::Usage
1545
1546Print a usage message from embedded pod documentation
1547
1548=item SDBM_File
1549
1550Tied access to sdbm files
1551
1552=item Safe
1553
1554Compile and execute code in restricted compartments
1555
1556=item Scalar::Util
1557
1558A selection of general-utility scalar subroutines
1559
1560=item Search::Dict
1561
1562Search for key in dictionary file
1563
1564=item SelectSaver
1565
1566Save and restore selected file handle
1567
1568=item SelfLoader
1569
1570Load functions only on demand
1571
1572=item Shell
1573
1574Run shell commands transparently within perl
1575
1576=item Socket
1577
1578Load the C socket.h defines and structure manipulators
1579
1580=item Storable
1581
1582Persistence for Perl data structures
1583
1584=item Switch
1585
1586A switch statement for Perl
1587
1588=item Symbol
1589
1590Manipulate Perl symbols and their names
1591
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
1600=item Term::ANSIColor
1601
1602Color screen output using ANSI escape sequences
1603
1604=item Term::Cap
1605
1606Perl termcap interface
1607
1608=item Term::Complete
1609
1610Perl word completion module
1611
1612=item Term::ReadLine
1613
1614Perl interface to various C<readline> packages.
1615
1616=item Test
1617
1618Provides a simple framework for writing test scripts
1619
1620=item Test::Builder
1621
1622Backend for building test libraries
1623
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
1636=item Test::Harness
1637
1638Run Perl standard test scripts with statistics
1639
1640=item Test::Harness::Assert
1641
1642Simple assert
1643
1644=item Test::Harness::Iterator
1645
1646Internal Test::Harness Iterator
1647
1648=item Test::Harness::Point
1649
1650Object for tracking a single test point
1651
1652=item Test::Harness::Straps
1653
1654Detailed analysis of test results
1655
1656=item Test::Harness::TAP
1657
1658Documentation for the TAP format
1659
1660=item Test::Harness::Util
1661
1662Utility functions for Test::Harness::*
1663
1664=item Test::More
1665
1666Yet another framework for writing test scripts
1667
1668=item Test::Simple
1669
1670Basic utilities for writing tests.
1671
1672=item Test::Tutorial
1673
1674A tutorial about writing really basic tests
1675
1676=item Text::Abbrev
1677
1678Create an abbreviation table from a list
1679
1680=item Text::Balanced
1681
1682Extract delimited text sequences from strings.
1683
1684=item Text::ParseWords
1685
1686Parse text into an array of tokens or array of arrays
1687
1688=item Text::Soundex
1689
1690Implementation of the Soundex Algorithm as Described by Knuth
1691
1692=item Text::Tabs
1693
1694Expand and unexpand tabs per the unix expand(1) and unexpand(1)
1695
1696=item Text::Wrap
1697
1698Line wrapping to form simple paragraphs
1699
1700=item Thread
1701
1702Manipulate threads in Perl (for old code only)
1703
1704=item Thread::Queue
1705
1706Thread-safe queues
1707
1708=item Thread::Semaphore
1709
1710Thread-safe semaphores
1711
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
1720=item Tie::Array
1721
1722Base class for tied arrays
1723
1724=item Tie::File
1725
1726Access the lines of a disk file via a Perl array
1727
1728=item Tie::Handle
1729
1730Base class definitions for tied handles
1731
1732=item Tie::Hash
1733
1734Base class definitions for tied hashes
1735
1736=item Tie::Memoize
1737
1738Add data to hash when needed
1739
1740=item Tie::RefHash
1741
1742Use references as hash keys
1743
1744=item Tie::Scalar
1745
1746Base class definitions for tied scalars
1747
1748=item Tie::SubstrHash
1749
1750Fixed-table-size, fixed-key-length hashing
1751
1752=item Time::HiRes
1753
1754High resolution alarm, sleep, gettimeofday, interval timers
1755
1756=item Time::Local
1757
1758Efficiently compute time from local and GMT time
1759
1760=item Time::gmtime
1761
1762By-name interface to Perl's built-in gmtime() function
1763
1764=item Time::localtime
1765
1766By-name interface to Perl's built-in localtime() function
1767
1768=item Time::tm
1769
1770Internal object used by Time::gmtime and Time::localtime
1771
1772=item UNIVERSAL
1773
1774Base class for ALL classes (blessed references)
1775
1776=item Unicode::Collate
1777
1778Unicode Collation Algorithm
1779
1780=item Unicode::Normalize
1781
1782Unicode Normalization Forms
1783
1784=item Unicode::UCD
1785
1786Unicode character database
1787
1788=item User::grent
1789
1790By-name interface to Perl's built-in getgr*() functions
1791
1792=item User::pwent
1793
1794By-name interface to Perl's built-in getpw*() functions
1795
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
1808=back
1809
1810To find out I<all> modules installed on your system, including
1811those without documentation or outside the standard release,
1812just use the following command (under the default win32 shell,
1813double quotes should be used instead of single quotes).
1814
1815 % perl -MFile::Find=find -MFile::Spec::Functions -Tlwe \
1816 'find { wanted => sub { print canonpath $_ if /\.pm\z/ },
1817 no_chdir => 1 }, @INC'
1818
1819(The -T is here to prevent '.' from being listed in @INC.)
1820They should all have their own documentation installed and accessible
1821via your system man(1) command. If you do not have a B<find>
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
1825to fix your manpath. See L<perl> for details. If you have no
1826system B<man> command, you might try the B<perldoc> program.
1827
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
1833=head2 Extension Modules
1834
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,
1837but may also be linked in statically. Supported extension modules
1838include Socket, Fcntl, and POSIX.
1839
1840Many popular C extension modules do not come bundled (at least, not
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
1845like Alta Vista or Google.
1846
1847=head1 CPAN
1848
1849CPAN stands for Comprehensive Perl Archive Network; it's a globally
1850replicated trove of Perl materials, including documentation, style
1851guides, tricks and traps, alternate ports to non-Unix systems and
1852occasional binary distributions for these. Search engines for
1853CPAN can be found at http://www.cpan.org/
1854
1855Most importantly, CPAN includes around a thousand unbundled modules,
1856some of which require a C compiler to build. Major categories of
1857modules are:
1858
1859=over
1860
1861=item *
1862
1863Language Extensions and Documentation Tools
1864
1865=item *
1866
1867Development Support
1868
1869=item *
1870
1871Operating System Interfaces
1872
1873=item *
1874
1875Networking, Device Control (modems) and InterProcess Communication
1876
1877=item *
1878
1879Data Types and Data Type Utilities
1880
1881=item *
1882
1883Database Interfaces
1884
1885=item *
1886
1887User Interfaces
1888
1889=item *
1890
1891Interfaces to / Emulations of Other Programming Languages
1892
1893=item *
1894
1895File Names, File Systems and File Locking (see also File Handles)
1896
1897=item *
1898
1899String Processing, Language Text Processing, Parsing, and Searching
1900
1901=item *
1902
1903Option, Argument, Parameter, and Configuration File Processing
1904
1905=item *
1906
1907Internationalization and Locale
1908
1909=item *
1910
1911Authentication, Security, and Encryption
1912
1913=item *
1914
1915World Wide Web, HTML, HTTP, CGI, MIME
1916
1917=item *
1918
1919Server and Daemon Utilities
1920
1921=item *
1922
1923Archiving and Compression
1924
1925=item *
1926
1927Images, Pixmap and Bitmap Manipulation, Drawing, and Graphing
1928
1929=item *
1930
1931Mail and Usenet News
1932
1933=item *
1934
1935Control Flow Utilities (callbacks and exceptions etc)
1936
1937=item *
1938
1939File Handle and Input/Output Stream Utilities
1940
1941=item *
1942
1943Miscellaneous Modules
1944
1945=back
1946
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.
1964
1965=head2 Africa
1966
1967=over 4
1968
1969=item South Africa
1970
1971 http://ftp.rucus.ru.ac.za/pub/perl/CPAN/
1972 ftp://ftp.rucus.ru.ac.za/pub/perl/CPAN/
1973 ftp://ftp.is.co.za/programming/perl/CPAN/
1974 ftp://ftp.saix.net/pub/CPAN/
1975 ftp://ftp.sun.ac.za/CPAN/CPAN/
1976
1977=back
1978
1979=head2 Asia
1980
1981=over 4
1982
1983=item China
1984
1985 http://cpan.linuxforum.net/
1986 http://cpan.shellhung.org/
1987 ftp://ftp.shellhung.org/pub/CPAN
1988 ftp://mirrors.hknet.com/CPAN
1989
1990=item Indonesia
1991
1992 http://mirrors.tf.itb.ac.id/cpan/
1993 http://cpan.cbn.net.id/
1994 ftp://ftp.cbn.net.id/mirror/CPAN
1995
1996=item Israel
1997
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/
2002
2003=item Japan
2004
2005 ftp://ftp.u-aizu.ac.jp/pub/CPAN
2006 ftp://ftp.kddlabs.co.jp/CPAN/
2007 ftp://ftp.ayamura.org/pub/CPAN/
2008 ftp://ftp.jaist.ac.jp/pub/lang/perl/CPAN/
2009 http://ftp.cpan.jp/
2010 ftp://ftp.cpan.jp/CPAN/
2011 ftp://ftp.dti.ad.jp/pub/lang/CPAN/
2012 ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/
2013
2014=item Malaysia
2015
2016 http://cpan.MyBSD.org.my
2017 http://mirror.leafbug.org/pub/CPAN
2018 http://ossig.mncc.com.my/mirror/pub/CPAN
2019
2020=item Russian Federation
2021
2022 http://cpan.tomsk.ru
2023 ftp://cpan.tomsk.ru/
2024
2025=item Saudi Arabia
2026
2027 ftp://ftp.isu.net.sa/pub/CPAN/
2028
2029=item Singapore
2030
2031 http://CPAN.en.com.sg/
2032 ftp://cpan.en.com.sg/
2033 http://mirror.averse.net/pub/CPAN
2034 ftp://mirror.averse.net/pub/CPAN
2035 http://cpan.oss.eznetsols.org
2036 ftp://ftp.oss.eznetsols.org/cpan
2037
2038=item South Korea
2039
2040 http://CPAN.bora.net/
2041 ftp://ftp.bora.net/pub/CPAN/
2042 http://mirror.kr.FreeBSD.org/CPAN
2043 ftp://ftp.kr.FreeBSD.org/pub/CPAN
2044
2045=item Taiwan
2046
2047 ftp://ftp.nctu.edu.tw/UNIX/perl/CPAN
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
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/
2055
2056=item Thailand
2057
2058 ftp://ftp.loxinfo.co.th/pub/cpan/
2059 ftp://ftp.cs.riubon.ac.th/pub/mirrors/CPAN/
2060
2061=back
2062
2063=head2 Central America
2064
2065=over 4
2066
2067=item Costa Rica
2068
2069 http://ftp.ucr.ac.cr/Unix/CPAN/
2070 ftp://ftp.ucr.ac.cr/pub/Unix/CPAN/
2071
2072=back
2073
2074=head2 Europe
2075
2076=over 4
2077
2078=item Austria
2079
2080 http://cpan.inode.at/
2081 ftp://cpan.inode.at
2082 ftp://ftp.tuwien.ac.at/pub/CPAN/
2083
2084=item Belgium
2085
2086 http://ftp.easynet.be/pub/CPAN/
2087 ftp://ftp.easynet.be/pub/CPAN/
2088 http://cpan.skynet.be
2089 ftp://ftp.cpan.skynet.be/pub/CPAN
2090 ftp://ftp.kulnet.kuleuven.ac.be/pub/mirror/CPAN/
2091
2092=item Bosnia and Herzegovina
2093
2094 http://cpan.blic.net/
2095
2096=item Bulgaria
2097
2098 http://cpan.online.bg
2099 ftp://cpan.online.bg/cpan
2100 http://cpan.zadnik.org
2101 ftp://ftp.zadnik.org/mirrors/CPAN/
2102 http://cpan.lirex.net/
2103 ftp://ftp.lirex.net/pub/mirrors/CPAN
2104
2105=item Croatia
2106
2107 http://ftp.linux.hr/pub/CPAN/
2108 ftp://ftp.linux.hr/pub/CPAN/
2109
2110=item Czech Republic
2111
2112 ftp://ftp.fi.muni.cz/pub/CPAN/
2113 ftp://sunsite.mff.cuni.cz/MIRRORS/ftp.funet.fi/pub/languages/perl/CPAN/
2114
2115=item Denmark
2116
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/
2122
2123=item Estonia
2124
2125 ftp://ftp.ut.ee/pub/languages/perl/CPAN/
2126
2127=item Finland
2128
2129 ftp://ftp.funet.fi/pub/languages/perl/CPAN/
2130 http://mirror.eunet.fi/CPAN
2131
2132=item France
2133
2134 http://www.enstimac.fr/Perl/CPAN
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
2146 http://ftp.crihan.fr/mirrors/ftp.cpan.org/
2147 ftp://ftp.crihan.fr/mirrors/ftp.cpan.org/
2148 http://ftp.u-strasbg.fr/CPAN
2149 ftp://ftp.u-strasbg.fr/CPAN
2150 ftp://cpan.cict.fr/pub/CPAN/
2151 ftp://ftp.uvsq.fr/pub/perl/CPAN/
2152
2153=item Germany
2154
2155 ftp://ftp.rub.de/pub/CPAN/
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/
2169
2170=item Greece
2171
2172 ftp://ftp.acn.gr/pub/lang/perl
2173 ftp://ftp.forthnet.gr/pub/languages/perl/CPAN
2174 ftp://ftp.ntua.gr/pub/lang/perl/
2175
2176=item Hungary
2177
2178 http://ftp.kfki.hu/packages/perl/CPAN/
2179 ftp://ftp.kfki.hu/pub/packages/perl/CPAN/
2180
2181=item Iceland
2182
2183 http://ftp.rhnet.is/pub/CPAN/
2184 ftp://ftp.rhnet.is/pub/CPAN/
2185
2186=item Ireland
2187
2188 http://cpan.indigo.ie/
2189 ftp://cpan.indigo.ie/pub/CPAN/
2190 http://ftp.heanet.ie/mirrors/ftp.perl.org/pub/CPAN
2191 ftp://ftp.heanet.ie/mirrors/ftp.perl.org/pub/CPAN
2192 http://sunsite.compapp.dcu.ie/pub/perl/
2193 ftp://sunsite.compapp.dcu.ie/pub/perl/
2194
2195=item Italy
2196
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/
2206 http://cpan.flashnet.it/
2207 ftp://ftp.flashnet.it/pub/CPAN/
2208
2209=item Latvia
2210
2211 http://kvin.lv/pub/CPAN/
2212
2213=item Lithuania
2214
2215 ftp://ftp.unix.lt/pub/CPAN/
2216
2217=item Netherlands
2218
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
2224 ftp://mirror.vuurwerk.nl/pub/CPAN/
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/
2230
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
2238 ftp://ftp.mega.net.pl/CPAN
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
2248 ftp://ftp.nfsi.pt/pub/CPAN
2249 http://ftp.linux.pt/pub/mirrors/CPAN
2250 ftp://ftp.linux.pt/pub/mirrors/CPAN
2251 http://cpan.ip.pt/
2252 ftp://cpan.ip.pt/pub/cpan/
2253 http://cpan.telepac.pt/
2254 ftp://ftp.telepac.pt/pub/cpan/
2255
2256=item Romania
2257
2258 ftp://ftp.bio-net.ro/pub/CPAN
2259 ftp://ftp.kappa.ro/pub/mirrors/ftp.perl.org/pub/CPAN/
2260 ftp://ftp.lug.ro/CPAN
2261 ftp://ftp.roedu.net/pub/CPAN/
2262 ftp://ftp.dntis.ro/pub/cpan/
2263 ftp://ftp.iasi.roedu.net/pub/mirrors/ftp.cpan.org/
2264 http://cpan.ambra.ro/
2265 ftp://ftp.ambra.ro/pub/CPAN
2266 ftp://ftp.dnttm.ro/pub/CPAN/
2267 ftp://ftp.lasting.ro/pub/CPAN
2268 ftp://ftp.timisoara.roedu.net/mirrors/CPAN/
2269
2270=item Russia
2271
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/
2276 ftp://ftp.corbina.ru/pub/CPAN/
2277 http://cpan.sai.msu.ru/
2278 ftp://ftp.sai.msu.su/pub/lang/perl/CPAN/
2279
2280=item Slovakia
2281
2282 ftp://ftp.cvt.stuba.sk/pub/CPAN/
2283
2284=item Slovenia
2285
2286 ftp://ftp.arnes.si/software/perl/CPAN/
2287
2288=item Spain
2289
2290 http://cpan.imasd.elmundo.es/
2291 ftp://ftp.rediris.es/mirror/CPAN/
2292 ftp://ftp.ri.telefonica-data.net/CPAN
2293 ftp://ftp.etse.urv.es/pub/perl/
2294
2295=item Sweden
2296
2297 http://ftp.du.se/CPAN/
2298 ftp://ftp.du.se/pub/CPAN/
2299 http://mirror.dataphone.se/CPAN
2300 ftp://mirror.dataphone.se/pub/CPAN
2301 ftp://ftp.sunet.se/pub/lang/perl/CPAN/
2302
2303=item Switzerland
2304
2305 http://cpan.mirror.solnet.ch/
2306 ftp://ftp.solnet.ch/mirror/CPAN/
2307 ftp://ftp.danyk.ch/CPAN/
2308 ftp://sunsite.cnlab-switch.ch/mirror/CPAN/
2309
2310=item Turkey
2311
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/
2315
2316=item Ukraine
2317
2318 http://cpan.org.ua/
2319 ftp://cpan.org.ua/
2320 ftp://ftp.perl.org.ua/pub/CPAN/
2321 http://no-more.kiev.ua/CPAN/
2322 ftp://no-more.kiev.ua/pub/CPAN/
2323
2324=item United Kingdom
2325
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
2330 http://cpan.mirror.anlx.net/
2331 ftp://ftp.mirror.anlx.net/CPAN/
2332 http://cpan.etla.org/
2333 ftp://cpan.etla.org/pub/CPAN
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/
2338 http://cpan.hambule.co.uk/
2339 http://cpan.mirrors.clockerz.net/
2340 ftp://ftp.clockerz.net/pub/CPAN/
2341 ftp://usit.shef.ac.uk/pub/packages/CPAN/
2342
2343=back
2344
2345=head2 North America
2346
2347=over 4
2348
2349=item Canada
2350
2351=over 8
2352
2353=item Alberta
2354
2355 http://cpan.sunsite.ualberta.ca/
2356 ftp://cpan.sunsite.ualberta.ca/pub/CPAN/
2357
2358=item Manitoba
2359
2360 http://theoryx5.uwinnipeg.ca/pub/CPAN/
2361 ftp://theoryx5.uwinnipeg.ca/pub/CPAN/
2362
2363=item Nova Scotia
2364
2365 ftp://cpan.chebucto.ns.ca/pub/CPAN/
2366
2367=item Ontario
2368
2369 ftp://ftp.nrc.ca/pub/CPAN/
2370
2371=back
2372
2373=item Mexico
2374
2375 http://cpan.azc.uam.mx
2376 ftp://cpan.azc.uam.mx/mirrors/CPAN
2377 http://www.cpan.unam.mx/
2378 ftp://ftp.unam.mx/pub/CPAN
2379 http://www.msg.com.mx/CPAN/
2380 ftp://ftp.msg.com.mx/pub/CPAN/
2381
2382=item United States
2383
2384=over 8
2385
2386=item Alabama
2387
2388 http://mirror.hiwaay.net/CPAN/
2389 ftp://mirror.hiwaay.net/CPAN/
2390
2391=item California
2392
2393 http://cpan.develooper.com/
2394 http://www.cpan.org/
2395 ftp://cpan.valueclick.com/pub/CPAN/
2396 http://www.mednor.net/ftp/pub/mirrors/CPAN/
2397 ftp://ftp.mednor.net/pub/mirrors/CPAN/
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
2402 http://cpan-sj.viaverio.com/
2403 ftp://cpan-sj.viaverio.com/pub/CPAN/
2404 http://cpan.digisle.net/
2405 ftp://cpan.digisle.net/pub/CPAN
2406 http://www.perl.com/CPAN/
2407 http://www.uberlan.net/CPAN
2408
2409=item Colorado
2410
2411 ftp://ftp.cs.colorado.edu/pub/perl/CPAN/
2412 http://cpan.four10.com
2413
2414=item Delaware
2415
2416 http://ftp.lug.udel.edu/pub/CPAN
2417 ftp://ftp.lug.udel.edu/pub/CPAN
2418
2419=item District of Columbia
2420
2421 ftp://ftp.dc.aleron.net/pub/CPAN/
2422
2423=item Florida
2424
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/
2429
2430=item Indiana
2431
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/
2437 http://fx.saintjoe.edu/pub/CPAN
2438 ftp://ftp.saintjoe.edu/pub/CPAN
2439 http://csociety-ftp.ecn.purdue.edu/pub/CPAN
2440 ftp://csociety-ftp.ecn.purdue.edu/pub/CPAN
2441
2442=item Kentucky
2443
2444 http://cpan.uky.edu/
2445 ftp://cpan.uky.edu/pub/CPAN/
2446 http://slugsite.louisville.edu/cpan
2447 ftp://slugsite.louisville.edu/CPAN
2448
2449=item Massachusetts
2450
2451 http://mirrors.towardex.com/CPAN
2452 ftp://mirrors.towardex.com/pub/CPAN
2453 ftp://ftp.ccs.neu.edu/net/mirrors/ftp.funet.fi/pub/languages/perl/CPAN/
2454
2455=item Michigan
2456
2457 ftp://cpan.cse.msu.edu/
2458 http://cpan.calvin.edu/pub/CPAN
2459 ftp://cpan.calvin.edu/pub/CPAN
2460
2461=item Nevada
2462
2463 http://www.oss.redundant.com/pub/CPAN
2464 ftp://www.oss.redundant.com/pub/CPAN
2465
2466=item New Jersey
2467
2468 http://ftp.cpanel.net/pub/CPAN/
2469 ftp://ftp.cpanel.net/pub/CPAN/
2470 http://cpan.teleglobe.net/
2471 ftp://cpan.teleglobe.net/pub/CPAN
2472
2473=item New York
2474
2475 http://cpan.belfry.net/
2476 http://cpan.erlbaum.net/
2477 ftp://cpan.erlbaum.net/
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/
2483
2484=item North Carolina
2485
2486 http://www.ibiblio.org/pub/languages/perl/CPAN
2487 ftp://ftp.ibiblio.org/pub/languages/perl/CPAN
2488 ftp://ftp.duke.edu/pub/perl/
2489 ftp://ftp.ncsu.edu/pub/mirror/CPAN/
2490
2491=item Oklahoma
2492
2493 ftp://ftp.ou.edu/mirrors/CPAN/
2494
2495=item Oregon
2496
2497 ftp://ftp.orst.edu/pub/CPAN
2498
2499=item Pennsylvania
2500
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/
2508
2509=item Tennessee
2510
2511 ftp://ftp.sunsite.utk.edu/pub/CPAN/
2512
2513=item Texas
2514
2515 http://ftp.sedl.org/pub/mirrors/CPAN/
2516 http://www.binarycode.org/cpan
2517 ftp://mirror.telentente.com/pub/CPAN
2518 http://mirrors.theonlinerecordstore.com/CPAN
2519
2520=item Utah
2521
2522 ftp://mirror.xmission.com/CPAN/
2523
2524=item Virginia
2525
2526 http://cpan-du.viaverio.com/
2527 ftp://cpan-du.viaverio.com/pub/CPAN/
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/
2532 http://noc.cvaix.com/mirrors/CPAN/
2533
2534=item Washington
2535
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/
2541
2542=item Wisconsin
2543
2544 http://mirror.sit.wisc.edu/pub/CPAN/
2545 ftp://mirror.sit.wisc.edu/pub/CPAN/
2546 http://mirror.aphix.com/CPAN
2547 ftp://mirror.aphix.com/pub/CPAN
2548
2549=back
2550
2551=back
2552
2553=head2 Oceania
2554
2555=over 4
2556
2557=item Australia
2558
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/
2563 http://cpan.mirrors.ilisys.com.au
2564
2565=item New Zealand
2566
2567 ftp://ftp.auckland.ac.nz/pub/perl/CPAN/
2568
2569=item United States
2570
2571 http://aniani.ifa.hawaii.edu/CPAN/
2572 ftp://aniani.ifa.hawaii.edu/CPAN/
2573
2574=back
2575
2576=head2 South America
2577
2578=over 4
2579
2580=item Argentina
2581
2582 ftp://mirrors.bannerlandia.com.ar/mirrors/CPAN/
2583 http://www.linux.org.ar/mirrors/cpan
2584 ftp://ftp.linux.org.ar/mirrors/cpan
2585
2586=item Brazil
2587
2588 ftp://cpan.pop-mg.com.br/pub/CPAN/
2589 ftp://ftp.matrix.com.br/pub/perl/CPAN/
2590 http://cpan.hostsul.com.br/
2591 ftp://cpan.hostsul.com.br/
2592
2593=item Chile
2594
2595 http://cpan.netglobalis.net/
2596 ftp://cpan.netglobalis.net/pub/CPAN/
2597
2598=back
2599
2600=head2 RSYNC Mirrors
2601
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
2641
2642For an up-to-date listing of CPAN sites,
2643see http://www.cpan.org/SITES or ftp://www.cpan.org/SITES .
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
2664exist. See L<perlsub>, L<perltoot>, and L<AutoLoader> for details about
2665the AUTOLOAD mechanism.
2666
2667=head2 Guidelines for Module Creation
2668
2669=over 4
2670
2671=item *
2672
2673Do similar modules already exist in some form?
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
2687=item *
2688
2689Try to design the new module to be easy to extend and reuse.
2690
2691Try to C<use warnings;> (or C<use warnings qw(...);>).
2692Remember that you can add C<no warnings qw(...);> to individual blocks
2693of code that need less warnings.
2694
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 {
2700 my $class = shift;
2701 return bless {}, $class;
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 {
2708 my $self = shift;
2709 my $class = ref($self) || $self;
2710 return bless {}, $class;
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'>.
2719Generally you can delete the C<eq 'FOO'> part with no harm at all.
2720Let the objects look after themselves! Generally, avoid hard-wired
2721class names as far as possible.
2722
2723Avoid C<< $r->Class::func() >> where using C<@ISA=qw(... Class ...)> and
2724C<< $r->func() >> would work (see L<perlbot> for more details).
2725
2726Use autosplit so little used or newly added functions won't be a
2727burden to programs that don't use them. Add test functions to
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
2733C<@SUBCLASS::ISA = qw(YOURCLASS);> your applications should be able
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
2742Always use B<-w>.
2743
2744Try to C<use strict;> (or C<use strict qw(...);>).
2745Remember that you can add C<no strict qw(...);> to individual blocks
2746of code that need less strictness.
2747
2748Always use B<-w>.
2749
2750Follow the guidelines in the perlstyle(1) manual.
2751
2752Always use B<-w>.
2753
2754=item *
2755
2756Some simple style guidelines
2757
2758The perlstyle manual supplied with Perl has many helpful points.
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
2778 $ALL_CAPS_HERE constants only (beware clashes with Perl vars)
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.
2783e.g., C<< $obj->as_string() >>.
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
2788=item *
2789
2790Select what to export.
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
2801module using the ModuleName::item_name (or C<< $blessed_ref->method >>)
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
2814=item *
2815
2816Select a name for the module.
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
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
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
2850=item *
2851
2852Have you got it right?
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
2871=item *
2872
2873README and other Additional Files.
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 *
2883
2884A description of the module/package/extension etc.
2885
2886=item *
2887
2888A copyright notice - see below.
2889
2890=item *
2891
2892Prerequisites - what else you may need to have.
2893
2894=item *
2895
2896How to build it - possible changes to Makefile.PL etc.
2897
2898=item *
2899
2900How to install it.
2901
2902=item *
2903
2904Recent changes in this release, especially incompatibilities
2905
2906=item *
2907
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
2918=item *
2919
2920Adding a Copyright Notice.
2921
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
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.
2930
2931My personal recommendation, out of respect for Larry, Perl, and the
2932Perl community at large is to state something simply like:
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
2942=item *
2943
2944Give the module a version/issue/release number.
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.
2951See L<Exporter> for details.
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
2958=item *
2959
2960How to release and distribute a module.
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
2967If possible, register the module with CPAN. You should
2968include details of its location in your announcement.
2969
2970Some notes about ftp archives: Please use a long descriptive file
2971name that includes the version number. Most incoming directories
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
2981Follow the instructions and links on:
2982
2983 http://www.cpan.org/modules/00modlist.long.html
2984 http://www.cpan.org/modules/04pause.html
2985
2986or upload to one of these sites:
2987
2988 https://pause.kbx.de/pause/
2989 http://pause.perl.org/pause/
2990
2991and notify <modules@perl.org>.
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
2999=item *
3000
3001Take care when changing a released module.
3002
3003Always strive to remain compatible with previous released versions.
3004Otherwise try to add a mechanism to revert to the
3005old behavior if people rely on it. Document incompatible changes.
3006
3007=back
3008
3009=back
3010
3011=head2 Guidelines for Converting Perl 4 Library Scripts into Modules
3012
3013=over 4
3014
3015=item *
3016
3017There is no requirement to convert anything.
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
3024=item *
3025
3026Consider the implications.
3027
3028All Perl applications that make use of the script will need to
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
3032=item *
3033
3034Make the most of the opportunity.
3035
3036If you are going to convert the script to a module you can use the
3037opportunity to redesign the interface. The guidelines for module
3038creation above include many of the issues you should consider.
3039
3040=item *
3041
3042The pl2pm utility will get you started.
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 *
3050
3051Adds the standard Module prologue lines
3052
3053=item *
3054
3055Converts package specifiers from ' to ::
3056
3057=item *
3058
3059Converts die(...) to croak(...)
3060
3061=item *
3062
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
3077=item *
3078
3079Complete applications rarely belong in the Perl Module Library.
3080
3081=item *
3082
3083Many applications contain some Perl code that could be reused.
3084
3085Help save the world! Share your code in a form that makes it easy
3086to reuse.
3087
3088=item *
3089
3090Break-out the reusable code into one or more separate module files.
3091
3092=item *
3093
3094Take the opportunity to reconsider and redesign the interfaces.
3095
3096=item *
3097
3098In some cases the 'application' can then be reduced to a small
3099
3100fragment of code built on top of the reusable modules. In these cases
3101the application could invoked as:
3102
3103 % perl -e 'use Module::Name; method(@ARGV)' ...
3104or
3105 % perl -mModule::Name ... (in perl5.002 or higher)
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.