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