6a70041d1722ca1c02e995396e703e60b12c0628
[p5sagit/p5-mst-13.2.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/BigRationale 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 rationales
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/
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.pacific.net.hk/
1065     ftp://ftp.pacific.net.hk/pub/mirror/CPAN/
1066     http://cpan.shellhung.org/
1067     ftp://ftp.shellhung.org/pub/CPAN
1068
1069 =item *
1070
1071 India
1072
1073     http://cpan.in.freeos.com
1074     ftp://cpan.in.freeos.com/pub/CPAN/
1075
1076 =item *
1077
1078 Indonesia
1079
1080     http://cpan.itb.web.id/
1081     ftp://mirrors.piksi.itb.ac.id/CPAN/
1082     http://CPAN.mweb.co.id/
1083     ftp://ftp.mweb.co.id/pub/languages/perl/CPAN/
1084
1085 =item *
1086
1087 Israel
1088
1089     http://www.iglu.org.il:/pub/CPAN/
1090     ftp://ftp.iglu.org.il/pub/CPAN/
1091     http://cpan.lerner.co.il/
1092     http://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/
1093     ftp://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/
1094
1095 =item *
1096
1097 Japan
1098
1099     ftp://ftp.u-aizu.ac.jp/pub/CPAN
1100     ftp://ftp.kddlabs.co.jp/CPAN/
1101     http://mirror.nucba.ac.jp/mirror/Perl/
1102     ftp://mirror.nucba.ac.jp/mirror/Perl/
1103     ftp://ftp.meisei-u.ac.jp/pub/CPAN/
1104     ftp://ftp.jaist.ac.jp/pub/lang/perl/CPAN/
1105     ftp://ftp.dti.ad.jp/pub/lang/CPAN/
1106     ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/
1107
1108 =item *
1109
1110 Korea
1111
1112     http://mirror.Mazic.org/pub/CPAN
1113     ftp://mirror.Mazic.org/pub/CPAN
1114
1115 =item *
1116
1117 Philippines
1118
1119     http://www.adzu.edu.ph/CPAN
1120
1121 =item *
1122
1123 Russian Federation
1124
1125     http://cpan.tomsk.ru
1126     ftp://cpan.tomsk.ru/pub/CPAN
1127
1128 =item *
1129
1130 Saudi Arabia
1131
1132     ftp://ftp.isu.net.sa/pub/CPAN/
1133
1134 =item *
1135
1136 Singapore
1137
1138     http://cpan.hjc.edu.sg
1139
1140 =item *
1141
1142 South Korea
1143
1144     http://CPAN.bora.net/
1145     ftp://ftp.bora.net/pub/CPAN/
1146     http://ftp.kornet.net/pub/CPAN/
1147     ftp://ftp.kornet.net/pub/CPAN/
1148     ftp://ftp.nuri.net/pub/CPAN/
1149
1150 =item *
1151
1152 Taiwan
1153
1154     ftp://coda.nctu.edu.tw/UNIX/perl/CPAN
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     http://download.nectec.or.th/CPAN/
1165     ftp://ftp.nectec.or.th/pub/languages/CPAN/
1166     ftp://ftp.cs.riubon.ac.th/pub/mirrors/CPAN/
1167
1168 =back
1169
1170 =head2 Central America
1171
1172 =over 4
1173
1174 =item *
1175
1176 Costa Rica
1177
1178     ftp://ftp.linux.co.cr/mirrors/CPAN/
1179     http://ftp.ucr.ac.cr/Unix/CPAN/
1180     ftp://ftp.ucr.ac.cr/pub/Unix/CPAN/
1181
1182 =back
1183
1184 =head2 Europe
1185
1186 =over 4
1187
1188 =item *
1189
1190 Austria
1191
1192     ftp://ftp.tuwien.ac.at/pub/CPAN/
1193
1194 =item *
1195
1196 Belgium
1197
1198     http://ftp.easynet.be/pub/CPAN/
1199     ftp://ftp.easynet.be/pub/CPAN/
1200     http://cpan.skynet.be
1201     ftp://ftp.skynet.be/pub/CPAN
1202     ftp://ftp.kulnet.kuleuven.ac.be/pub/mirror/CPAN/
1203
1204 =item *
1205
1206 Bulgaria
1207
1208     ftp://ftp.ntrl.net/pub/mirrors/CPAN/
1209
1210 =item *
1211
1212 Croatia
1213
1214     ftp://ftp.linux.hr/pub/CPAN/
1215
1216 =item *
1217
1218 Czech Republic
1219
1220     http://ftp.fi.muni.cz/pub/CPAN/
1221     ftp://ftp.fi.muni.cz/pub/CPAN/
1222     ftp://sunsite.mff.cuni.cz/MIRRORS/ftp.funet.fi/pub/languages/perl/CPAN/
1223
1224 =item *
1225
1226 Denmark
1227
1228     http://mirrors.sunsite.dk/cpan/
1229     ftp://sunsite.dk/mirrors/cpan/
1230     http://www.cpan.dk/CPAN/
1231     ftp://www.cpan.dk/ftp.cpan.org/CPAN/
1232
1233 =item *
1234
1235 England
1236
1237     http://www.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN
1238     ftp://ftp.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN/
1239     http://cpan.crazygreek.co.uk
1240     ftp://ftp.demon.co.uk/pub/CPAN/
1241     ftp://ftp.flirble.org/pub/languages/perl/CPAN/
1242     ftp://ftp.plig.org/pub/CPAN/
1243     ftp://sunsite.doc.ic.ac.uk/packages/CPAN/
1244     http://mirror.uklinux.net/CPAN/
1245     ftp://mirror.uklinux.net/pub/CPAN/
1246     ftp://usit.shef.ac.uk/pub/packages/CPAN/
1247
1248 =item *
1249
1250 Estonia
1251
1252     ftp://ftp.ut.ee/pub/languages/perl/CPAN/
1253
1254 =item *
1255
1256 Finland
1257
1258     ftp://ftp.funet.fi/pub/languages/perl/CPAN/
1259     http://cpan.kpnqwest.fi/
1260
1261 =item *
1262
1263 France
1264
1265     ftp://cpan.ftp.worldonline.fr/pub/CPAN/
1266     http://cpan.mirrors.easynet.fr/
1267     ftp://cpan.mirrors.easynet.fr/pub/ftp.cpan.org/
1268     ftp://ftp.club-internet.fr/pub/perl/CPAN/
1269     http://fr.cpan.org/
1270     ftp://ftp.lip6.fr/pub/perl/CPAN/
1271     ftp://ftp.oleane.net/pub/mirrors/CPAN/
1272     ftp://ftp.pasteur.fr/pub/computing/CPAN/
1273     http://cpan.cict.fr/
1274     ftp://cpan.cict.fr/pub/CPAN/
1275     ftp://ftp.uvsq.fr/pub/perl/CPAN/
1276
1277 =item *
1278
1279 Germany
1280
1281     ftp://ftp.rz.ruhr-uni-bochum.de/pub/CPAN/
1282     ftp://ftp.freenet.de/pub/ftp.cpan.org/pub/CPAN/
1283     ftp://ftp.uni-erlangen.de/pub/source/CPAN/
1284     ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/CPAN
1285     ftp://ftp.gigabell.net/pub/CPAN/
1286     http://ftp.gwdg.de/pub/languages/perl/CPAN/
1287     ftp://ftp.gwdg.de/pub/languages/perl/CPAN/
1288     ftp://ftp.uni-hamburg.de/pub/soft/lang/perl/CPAN/
1289     ftp://ftp.leo.org/pub/CPAN/
1290     http://cpan.noris.de/
1291     ftp://cpan.noris.de/pub/CPAN/
1292     ftp://ftp.mpi-sb.mpg.de/pub/perl/CPAN/
1293     ftp://ftp.gmd.de/mirrors/CPAN/
1294
1295 =item *
1296
1297 Greece
1298
1299     ftp://ftp.forthnet.gr/pub/languages/perl/CPAN
1300     ftp://ftp.ntua.gr/pub/lang/perl/
1301
1302 =item *
1303
1304 Hungary
1305
1306     http://cpan.artifact.hu/
1307     ftp://cpan.artifact.hu/CPAN/
1308     http://ftp.kfki.hu/pub/CPAN/
1309     ftp://ftp.kfki.hu/pub/CPAN/
1310
1311 =item *
1312
1313 Iceland
1314
1315     http://ftp.rhnet.is/pub/CPAN/
1316     ftp://ftp.rhnet.is/pub/CPAN/
1317
1318 =item *
1319
1320 Ireland
1321
1322     http://cpan.indigo.ie/
1323     ftp://cpan.indigo.ie/pub/CPAN/
1324     http://sunsite.compapp.dcu.ie/pub/perl/
1325     ftp://sunsite.compapp.dcu.ie/pub/perl/
1326
1327 =item *
1328
1329 Italy
1330
1331     http://cpan.nettuno.it/
1332     http://gusp.dyndns.org/CPAN/
1333     ftp://gusp.dyndns.org/pub/CPAN
1334     http://softcity.iol.it/cpan
1335     ftp://softcity.iol.it/pub/cpan
1336     ftp://ftp.unina.it/pub/Other/CPAN/
1337     ftp://ftp.unipi.it/pub/mirror/perl/CPAN/
1338     ftp://cis.uniRoma2.it/CPAN/
1339     ftp://ftp.edisontel.it/pub/CPAN_Mirror/
1340     ftp://ftp.flashnet.it/pub/CPAN/
1341
1342 =item *
1343
1344 Latvia
1345
1346     http://kvin.lv/pub/CPAN/
1347
1348 =item *
1349
1350 Lithuania
1351
1352     ftp://ftp.unix.lt/pub/CPAN/
1353
1354 =item *
1355
1356 Netherlands
1357
1358     ftp://download.xs4all.nl/pub/mirror/CPAN/
1359     ftp://ftp.nl.uu.net/pub/CPAN/
1360     ftp://ftp.nluug.nl/pub/languages/perl/CPAN/
1361     http://cpan.cybercomm.nl/
1362     ftp://mirror.cybercomm.nl/pub/cpan/
1363     ftp://ftp.cpan.nl/pub/CPAN/
1364     http://www.cs.uu.nl/mirror/CPAN/
1365     ftp://ftp.cs.uu.nl/mirror/CPAN/
1366
1367 =item *
1368
1369 Norway
1370
1371     ftp://ftp.uninett.no/pub/languages/perl/CPAN
1372     ftp://ftp.uit.no/pub/languages/perl/cpan/
1373
1374 =item *
1375
1376 Poland
1377
1378     ftp://ftp.pk.edu.pl/pub/lang/perl/CPAN/
1379     http://www.fic.uni.lodz.pl/pub/CPAN
1380     ftp://ftp.fic.uni.lodz.pl/pub/CPAN
1381     ftp://ftp.mega.net.pl/pub/mirrors/ftp.perl.com/
1382     ftp://ftp.man.torun.pl/pub/doc/CPAN/
1383     ftp://sunsite.icm.edu.pl/pub/CPAN/
1384
1385 =item *
1386
1387 Portugal
1388
1389     ftp://ftp.ua.pt/pub/CPAN/
1390     ftp://perl.di.uminho.pt/pub/CPAN/
1391     http://cpan.ip.pt/
1392     ftp://cpan.ip.pt/pub/perl/
1393     ftp://ftp.ist.utl.pt/pub/CPAN/
1394     http://cpan.ip.pt/
1395     ftp://cpan.ip.pt/pub/cpan/
1396     ftp://ftp.netc.pt/pub/CPAN/
1397     ftp://ftp.up.pt/pub/CPAN
1398
1399 =item *
1400
1401 Romania
1402
1403     ftp://archive.logicnet.ro/mirrors/ftp.cpan.org/CPAN/
1404     ftp://ftp.kappa.ro/pub/mirrors/ftp.perl.org/pub/CPAN/
1405     ftp://ftp.dntis.ro/pub/cpan/
1406     ftp://ftp.opsynet.com/cpan/
1407     ftp://ftp.dnttm.ro/pub/CPAN/
1408     ftp://ftp.lasting.ro/pub/CPAN
1409     ftp://ftp.timisoara.roedu.net/mirrors/CPAN/
1410
1411 =item *
1412
1413 Russia
1414
1415     ftp://ftp.chg.ru/pub/lang/perl/CPAN/
1416     http://cpan.rinet.ru/
1417     ftp://cpan.rinet.ru/pub/mirror/CPAN/
1418     ftp://ftp.aha.ru/pub/CPAN/
1419     http://cpan.sai.msu.ru/
1420     ftp://ftp.sai.msu.su/pub/lang/perl/CPAN/
1421
1422 =item *
1423
1424 Slovakia
1425
1426     ftp://ftp.entry.sk/pub/languages/perl/CPAN/
1427
1428 =item *
1429
1430 Slovenia
1431
1432     ftp://ftp.arnes.si/software/perl/CPAN/
1433
1434 =item *
1435
1436 Spain
1437
1438     ftp://ftp.rediris.es/mirror/CPAN/
1439     ftp://ftp.etse.urv.es/pub/perl/
1440
1441 =item *
1442
1443 Sweden
1444
1445     http://ftp.du.se/CPAN/
1446     ftp://ftp.du.se/pub/CPAN/
1447     ftp://mirror.dataphone.se/pub/CPAN
1448     ftp://ftp.sunet.se/pub/lang/perl/CPAN/
1449
1450 =item *
1451
1452 Switzerland
1453
1454     ftp://ftp.danyk.ch/CPAN/
1455     ftp://sunsite.cnlab-switch.ch/mirror/CPAN/
1456
1457 =item *
1458
1459 Turkey
1460
1461     ftp://sunsite.bilkent.edu.tr/pub/languages/CPAN/
1462
1463 =item *
1464
1465 Ukraine
1466
1467     http://cpan.org.ua/
1468     ftp://cpan.org.ua/
1469     ftp://ftp.perl.org.ua/pub/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     ftp://cpan.mirror.smartworker.org/pub/CPAN
1515
1516 =back
1517
1518 =item *
1519
1520 Mexico
1521
1522     http://cpan.azc.uam.mx
1523     ftp://cpan.azc.uam.mx/mirrors/CPAN
1524     http://cpan.unam.mx/
1525     ftp://cpan.unam.mx/pub/CPAN
1526     http://www.msg.com.mx/CPAN/
1527     ftp://ftp.msg.com.mx/pub/CPAN/
1528
1529 =item *
1530
1531 United States
1532
1533 =over 8
1534
1535 =item *
1536
1537 Alabama
1538
1539     http://mirror.hiwaay.net/CPAN/
1540     ftp://mirror.hiwaay.net/CPAN/
1541
1542 =item *
1543
1544 California
1545
1546     http://www.cpan.org/
1547     ftp://cpan.valueclick.com/pub/CPAN/
1548     http://mirrors.gossamer-threads.com/CPAN
1549     ftp://cpan.nas.nasa.gov/pub/perl/CPAN/
1550     ftp://ftp.digital.com/pub/plan/perl/CPAN/
1551     http://mirrors.kernel.org/cpan/
1552     ftp://mirrors.kernel.org/pub/CPAN
1553     http://cpan.digisle.net/
1554     ftp://cpan.digisle.net/pub/CPAN
1555     http://www.linuxjar.com/CPAN
1556     ftp://linuxjar.com/pub/CPAN
1557     http://www.perl.com/CPAN/
1558     http://download.sourceforge.net/mirrors/CPAN/
1559
1560 =item *
1561
1562 Colorado
1563
1564     ftp://ftp.cs.colorado.edu/pub/perl/CPAN/
1565
1566 =item *
1567
1568 District of Columbia
1569
1570     ftp://ftp.dc.us.telia.net/pub/cpan/
1571
1572 =item *
1573
1574 Florida
1575
1576     ftp://ftp.cise.ufl.edu/pub/mirrors/CPAN/
1577     http://mirror.csit.fsu.edu/pub/CPAN/
1578     ftp://mirror.csit.fsu.edu/pub/CPAN/
1579
1580 =item *
1581
1582 Illinois
1583
1584     http://uiarchive.uiuc.edu/mirrors/ftp/cpan.cse.msu.edu/
1585     ftp://uiarchive.uiuc.edu/mirrors/ftp/cpan.cse.msu.edu/
1586
1587 =item *
1588
1589 Indiana
1590
1591     ftp://ftp.uwsg.indiana.edu/pub/perl/CPAN/
1592     http://cpan.nitco.com/
1593     ftp://cpan.nitco.com/pub/CPAN/
1594     http://archive.progeny.com/CPAN/
1595     ftp://archive.progeny.com/CPAN/
1596     ftp://cpan.in-span.net/
1597     http://csociety-ftp.ecn.purdue.edu/pub/CPAN
1598     ftp://csociety-ftp.ecn.purdue.edu/pub/CPAN
1599
1600 =item *
1601
1602 Kentucky
1603
1604     http://cpan.uky.edu/
1605     ftp://cpan.uky.edu/pub/CPAN/
1606
1607 =item *
1608
1609 Massachusetts
1610
1611     ftp://ftp.ccs.neu.edu/net/mirrors/ftp.funet.fi/pub/languages/perl/CPAN/
1612     http://cpan.mirrors.netnumina.com/
1613     ftp://mirrors.netnumina.com/cpan/
1614     ftp://ftp.iguide.com/pub/mirrors/packages/perl/CPAN/
1615
1616 =item *
1617
1618 Michigan
1619
1620     ftp://cpan.cse.msu.edu/
1621
1622 =item *
1623
1624 New Jersey
1625
1626     ftp://ftp.cpanel.net/pub/CPAN/
1627
1628 =item *
1629
1630 New York
1631
1632     ftp://ftp.freesoftware.com/pub/perl/CPAN/
1633     ftp://ftp.stealth.net/pub/CPAN/
1634     http://www.rge.com/pub/languages/perl/
1635     ftp://ftp.rge.com/pub/languages/perl/
1636     ftp://mirrors.cloud9.net/pub/mirrors/CPAN/
1637
1638 =item *
1639
1640 North Carolina
1641
1642     ftp://ftp.duke.edu/pub/perl/
1643
1644 =item *
1645
1646 Ohio
1647
1648     ftp://ftp.loaded.net/pub/CPAN/
1649
1650 =item *
1651
1652 Oklahoma
1653
1654     ftp://ftp.ou.edu/mirrors/CPAN/
1655
1656 =item *
1657
1658 Oregon
1659
1660     ftp://ftp.orst.edu/pub/CPAN
1661
1662 =item *
1663
1664 Pennsylvania
1665
1666     http://ftp.epix.net/CPAN/
1667     ftp://ftp.epix.net/pub/languages/perl/
1668     http://mirrors.phenominet.com/pub/CPAN/
1669     ftp://mirrors.phenominet.com/pub/CPAN/
1670     ftp://carroll.cac.psu.edu/pub/CPAN/
1671
1672 =item *
1673
1674 Tennessee
1675
1676     ftp://ftp.sunsite.utk.edu/pub/CPAN/
1677
1678 =item *
1679
1680 Texas
1681
1682     http://ftp.sedl.org/pub/mirrors/CPAN/
1683
1684 =item *
1685
1686 Utah
1687
1688     ftp://mirror.xmission.com/CPAN/
1689
1690 =item *
1691
1692 Virginia
1693
1694     http://mirrors.rcn.net/pub/lang/CPAN/
1695     ftp://mirrors.rcn.net/pub/lang/CPAN/
1696     ftp://ruff.cs.jmu.edu/pub/CPAN/
1697     http://perl.Liquidation.com/CPAN/
1698
1699 =item *
1700
1701 Washington
1702
1703     http://cpan.llarian.net/
1704     ftp://cpan.llarian.net/pub/CPAN/
1705     http://cpan.mirrorcentral.com/
1706     ftp://ftp.mirrorcentral.com/pub/CPAN/
1707     ftp://ftp-mirror.internap.com/pub/CPAN/
1708
1709 =back
1710
1711 =back
1712
1713 =head2 Oceania
1714
1715 =over 4
1716
1717 =item *
1718
1719 Australia
1720
1721     http://ftp.planetmirror.com/pub/CPAN/
1722     ftp://ftp.planetmirror.com/pub/CPAN/
1723     ftp://mirror.aarnet.edu.au/pub/perl/CPAN/
1724     ftp://cpan.topend.com.au/pub/CPAN/
1725
1726 =item *
1727
1728 New Zealand
1729     ftp://ftp.auckland.ac.nz/pub/perl/CPAN/
1730
1731 =back
1732
1733 =head2 South America
1734
1735 =over 4
1736
1737 =item *
1738
1739 Argentina
1740
1741     ftp://mirrors.bannerlandia.com.ar/mirrors/CPAN/
1742
1743 =item *
1744
1745 Brazil
1746
1747     ftp://cpan.pop-mg.com.br/pub/CPAN/
1748     ftp://ftp.matrix.com.br/pub/perl/CPAN/
1749
1750 =item *
1751
1752 Chile
1753
1754     ftp://ftp.psinet.cl/pub/programming/perl/CPAN/
1755     ftp://sunsite.dcc.uchile.cl/pub/lang/perl/
1756
1757 =back
1758
1759
1760 For an up-to-date listing of CPAN sites,
1761 see http://www.cpan.org/SITES or ftp://www.cpan.org/SITES .
1762
1763 =head1 Modules: Creation, Use, and Abuse
1764
1765 (The following section is borrowed directly from Tim Bunce's modules
1766 file, available at your nearest CPAN site.)
1767
1768 Perl implements a class using a package, but the presence of a
1769 package doesn't imply the presence of a class.  A package is just a
1770 namespace.  A class is a package that provides subroutines that can be
1771 used as methods.  A method is just a subroutine that expects, as its
1772 first argument, either the name of a package (for "static" methods),
1773 or a reference to something (for "virtual" methods).
1774
1775 A module is a file that (by convention) provides a class of the same
1776 name (sans the .pm), plus an import method in that class that can be
1777 called to fetch exported symbols.  This module may implement some of
1778 its methods by loading dynamic C or C++ objects, but that should be
1779 totally transparent to the user of the module.  Likewise, the module
1780 might set up an AUTOLOAD function to slurp in subroutine definitions on
1781 demand, but this is also transparent.  Only the F<.pm> file is required to
1782 exist.  See L<perlsub>, L<perltoot>, and L<AutoLoader> for details about
1783 the AUTOLOAD mechanism.
1784
1785 =head2 Guidelines for Module Creation
1786
1787 =over 4
1788
1789 =item  *
1790
1791 Do similar modules already exist in some form?
1792
1793 If so, please try to reuse the existing modules either in whole or
1794 by inheriting useful features into a new class.  If this is not
1795 practical try to get together with the module authors to work on
1796 extending or enhancing the functionality of the existing modules.
1797 A perfect example is the plethora of packages in perl4 for dealing
1798 with command line options.
1799
1800 If you are writing a module to expand an already existing set of
1801 modules, please coordinate with the author of the package.  It
1802 helps if you follow the same naming scheme and module interaction
1803 scheme as the original author.
1804
1805 =item  *
1806
1807 Try to design the new module to be easy to extend and reuse.
1808
1809 Try to C<use warnings;> (or C<use warnings qw(...);>).
1810 Remember that you can add C<no warnings qw(...);> to individual blocks
1811 of code that need less warnings.
1812
1813 Use blessed references.  Use the two argument form of bless to bless
1814 into the class name given as the first parameter of the constructor,
1815 e.g.,:
1816
1817  sub new {
1818      my $class = shift;
1819      return bless {}, $class;
1820  }
1821
1822 or even this if you'd like it to be used as either a static
1823 or a virtual method.
1824
1825  sub new {
1826      my $self  = shift;
1827      my $class = ref($self) || $self;
1828      return bless {}, $class;
1829  }
1830
1831 Pass arrays as references so more parameters can be added later
1832 (it's also faster).  Convert functions into methods where
1833 appropriate.  Split large methods into smaller more flexible ones.
1834 Inherit methods from other modules if appropriate.
1835
1836 Avoid class name tests like: C<die "Invalid" unless ref $ref eq 'FOO'>.
1837 Generally you can delete the C<eq 'FOO'> part with no harm at all.
1838 Let the objects look after themselves! Generally, avoid hard-wired
1839 class names as far as possible.
1840
1841 Avoid C<< $r->Class::func() >> where using C<@ISA=qw(... Class ...)> and
1842 C<< $r->func() >> would work (see L<perlbot> for more details).
1843
1844 Use autosplit so little used or newly added functions won't be a
1845 burden to programs that don't use them. Add test functions to
1846 the module after __END__ either using AutoSplit or by saying:
1847
1848  eval join('',<main::DATA>) || die $@ unless caller();
1849
1850 Does your module pass the 'empty subclass' test? If you say
1851 C<@SUBCLASS::ISA = qw(YOURCLASS);> your applications should be able
1852 to use SUBCLASS in exactly the same way as YOURCLASS.  For example,
1853 does your application still work if you change:  C<$obj = new YOURCLASS;>
1854 into: C<$obj = new SUBCLASS;> ?
1855
1856 Avoid keeping any state information in your packages. It makes it
1857 difficult for multiple other packages to use yours. Keep state
1858 information in objects.
1859
1860 Always use B<-w>.
1861
1862 Try to C<use strict;> (or C<use strict qw(...);>).
1863 Remember that you can add C<no strict qw(...);> to individual blocks
1864 of code that need less strictness.
1865
1866 Always use B<-w>.
1867
1868 Follow the guidelines in the perlstyle(1) manual.
1869
1870 Always use B<-w>.
1871
1872 =item  *
1873
1874 Some simple style guidelines
1875
1876 The perlstyle manual supplied with Perl has many helpful points.
1877
1878 Coding style is a matter of personal taste. Many people evolve their
1879 style over several years as they learn what helps them write and
1880 maintain good code.  Here's one set of assorted suggestions that
1881 seem to be widely used by experienced developers:
1882
1883 Use underscores to separate words.  It is generally easier to read
1884 $var_names_like_this than $VarNamesLikeThis, especially for
1885 non-native speakers of English. It's also a simple rule that works
1886 consistently with VAR_NAMES_LIKE_THIS.
1887
1888 Package/Module names are an exception to this rule. Perl informally
1889 reserves lowercase module names for 'pragma' modules like integer
1890 and strict. Other modules normally begin with a capital letter and
1891 use mixed case with no underscores (need to be short and portable).
1892
1893 You may find it helpful to use letter case to indicate the scope
1894 or nature of a variable. For example:
1895
1896  $ALL_CAPS_HERE   constants only (beware clashes with Perl vars)
1897  $Some_Caps_Here  package-wide global/static
1898  $no_caps_here    function scope my() or local() variables
1899
1900 Function and method names seem to work best as all lowercase.
1901 e.g., C<< $obj->as_string() >>.
1902
1903 You can use a leading underscore to indicate that a variable or
1904 function should not be used outside the package that defined it.
1905
1906 =item  *
1907
1908 Select what to export.
1909
1910 Do NOT export method names!
1911
1912 Do NOT export anything else by default without a good reason!
1913
1914 Exports pollute the namespace of the module user.  If you must
1915 export try to use @EXPORT_OK in preference to @EXPORT and avoid
1916 short or common names to reduce the risk of name clashes.
1917
1918 Generally anything not exported is still accessible from outside the
1919 module using the ModuleName::item_name (or C<< $blessed_ref->method >>)
1920 syntax.  By convention you can use a leading underscore on names to
1921 indicate informally that they are 'internal' and not for public use.
1922
1923 (It is actually possible to get private functions by saying:
1924 C<my $subref = sub { ... };  &$subref;>.  But there's no way to call that
1925 directly as a method, because a method must have a name in the symbol
1926 table.)
1927
1928 As a general rule, if the module is trying to be object oriented
1929 then export nothing. If it's just a collection of functions then
1930 @EXPORT_OK anything but use @EXPORT with caution.
1931
1932 =item  *
1933
1934 Select a name for the module.
1935
1936 This name should be as descriptive, accurate, and complete as
1937 possible.  Avoid any risk of ambiguity. Always try to use two or
1938 more whole words.  Generally the name should reflect what is special
1939 about what the module does rather than how it does it.  Please use
1940 nested module names to group informally or categorize a module.
1941 There should be a very good reason for a module not to have a nested name.
1942 Module names should begin with a capital letter.
1943
1944 Having 57 modules all called Sort will not make life easy for anyone
1945 (though having 23 called Sort::Quick is only marginally better :-).
1946 Imagine someone trying to install your module alongside many others.
1947 If in any doubt ask for suggestions in comp.lang.perl.misc.
1948
1949 If you are developing a suite of related modules/classes it's good
1950 practice to use nested classes with a common prefix as this will
1951 avoid namespace clashes. For example: Xyz::Control, Xyz::View,
1952 Xyz::Model etc. Use the modules in this list as a naming guide.
1953
1954 If adding a new module to a set, follow the original author's
1955 standards for naming modules and the interface to methods in
1956 those modules.
1957
1958 If developing modules for private internal or project specific use,
1959 that will never be released to the public, then you should ensure
1960 that their names will not clash with any future public module. You
1961 can do this either by using the reserved Local::* category or by
1962 using a category name that includes an underscore like Foo_Corp::*.
1963
1964 To be portable each component of a module name should be limited to
1965 11 characters. If it might be used on MS-DOS then try to ensure each is
1966 unique in the first 8 characters. Nested modules make this easier.
1967
1968 =item  *
1969
1970 Have you got it right?
1971
1972 How do you know that you've made the right decisions? Have you
1973 picked an interface design that will cause problems later? Have
1974 you picked the most appropriate name? Do you have any questions?
1975
1976 The best way to know for sure, and pick up many helpful suggestions,
1977 is to ask someone who knows. Comp.lang.perl.misc is read by just about
1978 all the people who develop modules and it's the best place to ask.
1979
1980 All you need to do is post a short summary of the module, its
1981 purpose and interfaces. A few lines on each of the main methods is
1982 probably enough. (If you post the whole module it might be ignored
1983 by busy people - generally the very people you want to read it!)
1984
1985 Don't worry about posting if you can't say when the module will be
1986 ready - just say so in the message. It might be worth inviting
1987 others to help you, they may be able to complete it for you!
1988
1989 =item  *
1990
1991 README and other Additional Files.
1992
1993 It's well known that software developers usually fully document the
1994 software they write. If, however, the world is in urgent need of
1995 your software and there is not enough time to write the full
1996 documentation please at least provide a README file containing:
1997
1998 =over 10
1999
2000 =item *
2001
2002 A description of the module/package/extension etc.
2003
2004 =item *
2005
2006 A copyright notice - see below.
2007
2008 =item *
2009
2010 Prerequisites - what else you may need to have.
2011
2012 =item *
2013
2014 How to build it - possible changes to Makefile.PL etc.
2015
2016 =item *
2017
2018 How to install it.
2019
2020 =item *
2021
2022 Recent changes in this release, especially incompatibilities
2023
2024 =item *
2025
2026 Changes / enhancements you plan to make in the future.
2027
2028 =back
2029
2030 If the README file seems to be getting too large you may wish to
2031 split out some of the sections into separate files: INSTALL,
2032 Copying, ToDo etc.
2033
2034 =over 4
2035
2036 =item *
2037
2038 Adding a Copyright Notice.
2039
2040 How you choose to license your work is a personal decision.
2041 The general mechanism is to assert your Copyright and then make
2042 a declaration of how others may copy/use/modify your work.
2043
2044 Perl, for example, is supplied with two types of licence: The GNU
2045 GPL and The Artistic Licence (see the files README, Copying, and
2046 Artistic).  Larry has good reasons for NOT just using the GNU GPL.
2047
2048 My personal recommendation, out of respect for Larry, Perl, and the
2049 Perl community at large is to state something simply like:
2050
2051  Copyright (c) 1995 Your Name. All rights reserved.
2052  This program is free software; you can redistribute it and/or
2053  modify it under the same terms as Perl itself.
2054
2055 This statement should at least appear in the README file. You may
2056 also wish to include it in a Copying file and your source files.
2057 Remember to include the other words in addition to the Copyright.
2058
2059 =item  *
2060
2061 Give the module a version/issue/release number.
2062
2063 To be fully compatible with the Exporter and MakeMaker modules you
2064 should store your module's version number in a non-my package
2065 variable called $VERSION.  This should be a floating point
2066 number with at least two digits after the decimal (i.e., hundredths,
2067 e.g, C<$VERSION = "0.01">).  Don't use a "1.3.2" style version.
2068 See L<Exporter> for details.
2069
2070 It may be handy to add a function or method to retrieve the number.
2071 Use the number in announcements and archive file names when
2072 releasing the module (ModuleName-1.02.tar.Z).
2073 See perldoc ExtUtils::MakeMaker.pm for details.
2074
2075 =item  *
2076
2077 How to release and distribute a module.
2078
2079 It's good idea to post an announcement of the availability of your
2080 module (or the module itself if small) to the comp.lang.perl.announce
2081 Usenet newsgroup.  This will at least ensure very wide once-off
2082 distribution.
2083
2084 If possible, register the module with CPAN.  You should
2085 include details of its location in your announcement.
2086
2087 Some notes about ftp archives: Please use a long descriptive file
2088 name that includes the version number. Most incoming directories
2089 will not be readable/listable, i.e., you won't be able to see your
2090 file after uploading it. Remember to send your email notification
2091 message as soon as possible after uploading else your file may get
2092 deleted automatically. Allow time for the file to be processed
2093 and/or check the file has been processed before announcing its
2094 location.
2095
2096 FTP Archives for Perl Modules:
2097
2098 Follow the instructions and links on:
2099
2100    http://www.cpan.org/modules/00modlist.long.html
2101    http://www.cpan.org/modules/04pause.html
2102
2103 or upload to one of these sites:
2104
2105    https://pause.kbx.de/pause/
2106    http://pause.perl.org/pause/
2107
2108 and notify <modules@perl.org>.
2109
2110 By using the WWW interface you can ask the Upload Server to mirror
2111 your modules from your ftp or WWW site into your own directory on
2112 CPAN!
2113
2114 Please remember to send me an updated entry for the Module list!
2115
2116 =item  *
2117
2118 Take care when changing a released module.
2119
2120 Always strive to remain compatible with previous released versions.
2121 Otherwise try to add a mechanism to revert to the
2122 old behavior if people rely on it.  Document incompatible changes.
2123
2124 =back
2125
2126 =back
2127
2128 =head2 Guidelines for Converting Perl 4 Library Scripts into Modules
2129
2130 =over 4
2131
2132 =item  *
2133
2134 There is no requirement to convert anything.
2135
2136 If it ain't broke, don't fix it! Perl 4 library scripts should
2137 continue to work with no problems. You may need to make some minor
2138 changes (like escaping non-array @'s in double quoted strings) but
2139 there is no need to convert a .pl file into a Module for just that.
2140
2141 =item  *
2142
2143 Consider the implications.
2144
2145 All Perl applications that make use of the script will need to
2146 be changed (slightly) if the script is converted into a module.  Is
2147 it worth it unless you plan to make other changes at the same time?
2148
2149 =item  *
2150
2151 Make the most of the opportunity.
2152
2153 If you are going to convert the script to a module you can use the
2154 opportunity to redesign the interface.  The guidelines for module
2155 creation above include many of the issues you should consider.
2156
2157 =item  *
2158
2159 The pl2pm utility will get you started.
2160
2161 This utility will read *.pl files (given as parameters) and write
2162 corresponding *.pm files. The pl2pm utilities does the following:
2163
2164 =over 10
2165
2166 =item *
2167
2168 Adds the standard Module prologue lines
2169
2170 =item *
2171
2172 Converts package specifiers from ' to ::
2173
2174 =item *
2175
2176 Converts die(...) to croak(...)
2177
2178 =item *
2179
2180 Several other minor changes
2181
2182 =back
2183
2184 Being a mechanical process pl2pm is not bullet proof. The converted
2185 code will need careful checking, especially any package statements.
2186 Don't delete the original .pl file till the new .pm one works!
2187
2188 =back
2189
2190 =head2 Guidelines for Reusing Application Code
2191
2192 =over 4
2193
2194 =item  *
2195
2196 Complete applications rarely belong in the Perl Module Library.
2197
2198 =item  *
2199
2200 Many applications contain some Perl code that could be reused.
2201
2202 Help save the world! Share your code in a form that makes it easy
2203 to reuse.
2204
2205 =item  *
2206
2207 Break-out the reusable code into one or more separate module files.
2208
2209 =item  *
2210
2211 Take the opportunity to reconsider and redesign the interfaces.
2212
2213 =item  *
2214
2215 In some cases the 'application' can then be reduced to a small
2216
2217 fragment of code built on top of the reusable modules. In these cases
2218 the application could invoked as:
2219
2220      % perl -e 'use Module::Name; method(@ARGV)' ...
2221 or
2222      % perl -mModule::Name ...    (in perl5.002 or higher)
2223
2224 =back
2225
2226 =head1 NOTE
2227
2228 Perl does not enforce private and public parts of its modules as you may
2229 have been used to in other languages like C++, Ada, or Modula-17.  Perl
2230 doesn't have an infatuation with enforced privacy.  It would prefer
2231 that you stayed out of its living room because you weren't invited, not
2232 because it has a shotgun.
2233
2234 The module and its user have a contract, part of which is common law,
2235 and part of which is "written".  Part of the common law contract is
2236 that a module doesn't pollute any namespace it wasn't asked to.  The
2237 written contract for the module (A.K.A. documentation) may make other
2238 provisions.  But then you know when you C<use RedefineTheWorld> that
2239 you're redefining the world and willing to take the consequences.