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