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