This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
threads::shared::queue and semaphore become Thread::Semaphore
[perl5.git] / pod / perlmodlib.pod
1 =for maintainers
2 Generated by perlmodlib.PL -- DO NOT EDIT!
3
4 =head1 NAME
5
6 perlmodlib - constructing new Perl modules and finding existing ones
7
8 =head1 DESCRIPTION
9
10 =head1 THE PERL MODULE LIBRARY
11
12 Many modules are included the Perl distribution.  These are described
13 below, and all end in F<.pm>.  You may discover compiled library
14 file (usually ending in F<.so>) or small pieces of modules to be
15 autoloaded (ending in F<.al>); these were automatically generated
16 by the installation process.  You may also discover files in the
17 library directory that end in either F<.pl> or F<.ph>.  These are
18 old libraries supplied so that old programs that use them still
19 run.  The F<.pl> files will all eventually be converted into standard
20 modules, and the F<.ph> files made by B<h2ph> will probably end up
21 as extension modules made by B<h2xs>.  (Some F<.ph> values may
22 already be available through the POSIX, Errno, or Fcntl modules.)
23 The B<pl2pm> file in the distribution may help in your conversion,
24 but it's just a mechanical process and therefore far from bulletproof.
25
26 =head2 Pragmatic Modules
27
28 They work somewhat like compiler directives (pragmata) in that they
29 tend to affect the compilation of your program, and thus will usually
30 work well only when used within a C<use>, or C<no>.  Most of these
31 are lexically scoped, so an inner BLOCK may countermand them
32 by saying:
33
34     no integer;
35     no strict 'refs';
36     no warnings;
37
38 which lasts until the end of that BLOCK.
39
40 Some pragmas are lexically scoped--typically those that affect the
41 C<$^H> hints variable.  Others affect the current package instead,
42 like C<use vars> and C<use subs>, which allow you to predeclare a
43 variables or subroutines within a particular I<file> rather than
44 just a block.  Such declarations are effective for the entire file
45 for which they were declared.  You cannot rescind them with C<no
46 vars> or C<no subs>.
47
48 The following pragmas are defined (and have their own documentation).
49
50 =over 12
51
52 =item attributes
53
54 Get/set subroutine or variable attributes
55
56 =item 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 PerlIO::via::QuotedPrint
819
820 PerlIO layer for quoted-printable strings
821
822 =item Pod::Checker
823
824 Check pod documents for syntax errors
825
826 =item Pod::Find
827
828 Find POD documents in directory trees
829
830 =item Pod::Functions
831
832 Group Perl's functions a la perlfunc.pod
833
834 =item Pod::Html
835
836 Module to convert pod files to HTML
837
838 =item Pod::InputObjects
839
840 Objects representing POD input paragraphs, commands, etc.
841
842 =item Pod::LaTeX
843
844 Convert Pod data to formatted Latex
845
846 =item Pod::Man
847
848 Convert POD data to formatted *roff input
849
850 =item Pod::ParseLink
851
852 Parse an LE<lt>E<gt> formatting code in POD text
853
854 =item Pod::ParseUtils
855
856 Helpers for POD parsing and conversion
857
858 =item Pod::Parser
859
860 Base class for creating POD filters and translators
861
862 =item Pod::Plainer
863
864 Perl extension for converting Pod to old style Pod.
865
866 =item Pod::Select
867
868 Extract selected sections of POD from input
869
870 =item Pod::Text
871
872 Convert POD data to formatted ASCII text
873
874 =item Pod::Text::Color
875
876 Convert POD data to formatted color ASCII text
877
878 =item Pod::Text::Overstrike
879
880 Convert POD data to formatted overstrike text
881
882 =item Pod::Text::Termcap
883
884 Convert POD data to ASCII text with format escapes
885
886 =item Pod::Usage
887
888 Print a usage message from embedded pod documentation
889
890 =item SDBM_File
891
892 Tied access to sdbm files
893
894 =item Safe
895
896 Compile and execute code in restricted compartments
897
898 =item Search::Dict
899
900 Search for key in dictionary file
901
902 =item SelectSaver
903
904 Save and restore selected file handle
905
906 =item SelfLoader
907
908 Load functions only on demand
909
910 =item Shell
911
912 Run shell commands transparently within perl
913
914 =item Socket
915
916 Load the C socket.h defines and structure manipulators 
917
918 =item Storable
919
920 Persistence for Perl data structures
921
922 =item Switch
923
924 A switch statement for Perl
925
926 =item Symbol
927
928 Manipulate Perl symbols and their names
929
930 =item Term::ANSIColor
931
932 Color screen output using ANSI escape sequences
933
934 =item Term::Cap
935
936 Perl termcap interface
937
938 =item Term::Complete
939
940 Perl word completion module
941
942 =item Term::ReadLine
943
944 Perl interface to various C<readline> packages. If
945
946 =item Test
947
948 Provides a simple framework for writing test scripts
949
950 =item Test::Builder
951
952 Backend for building test libraries
953
954 =item Test::Harness
955
956 Run perl standard test scripts with statistics
957
958 =item Test::Harness::Assert
959
960 Simple assert
961
962 =item Test::Harness::Iterator
963
964 Internal Test::Harness Iterator
965
966 =item Test::Harness::Straps
967
968 Detailed analysis of test results
969
970 =item Test::More
971
972 Yet another framework for writing test scripts
973
974 =item Test::Simple
975
976 Basic utilities for writing tests.
977
978 =item Test::Tutorial
979
980 A tutorial about writing really basic tests
981
982 =item Text::Abbrev
983
984 Create an abbreviation table from a list
985
986 =item Text::Balanced
987
988 Extract delimited text sequences from strings.
989
990 =item Text::ParseWords
991
992 Parse text into an array of tokens or array of arrays
993
994 =item Text::Soundex
995
996 Implementation of the Soundex Algorithm as Described by Knuth
997
998 =item Text::Tabs
999
1000 Expand and unexpand tabs per the unix expand(1) and unexpand(1)
1001
1002 =item Text::Wrap
1003
1004 Line wrapping to form simple paragraphs
1005
1006 =item Thread
1007
1008 Manipulate threads in Perl (for old code only)
1009
1010 =item Thread::Queue
1011
1012 Thread-safe queues
1013
1014 =item Thread::Semaphore
1015
1016 Thread-safe semaphores
1017
1018 =item Tie::Array
1019
1020 Base class for tied arrays
1021
1022 =item Tie::File
1023
1024 Access the lines of a disk file via a Perl array
1025
1026 =item Tie::Handle
1027
1028 Base class definitions for tied handles
1029
1030 =item Tie::Hash
1031
1032 Base class definitions for tied hashes
1033
1034 =item Tie::Memoize
1035
1036 Add data to hash when needed
1037
1038 =item Tie::RefHash
1039
1040 Use references as hash keys
1041
1042 =item Tie::Scalar
1043
1044 Base class definitions for tied scalars
1045
1046 =item Tie::SubstrHash
1047
1048 Fixed-table-size, fixed-key-length hashing
1049
1050 =item Time::Local
1051
1052 Efficiently compute time from local and GMT time
1053
1054 =item Time::gmtime
1055
1056 By-name interface to Perl's built-in gmtime() function
1057
1058 =item Time::localtime
1059
1060 By-name interface to Perl's built-in localtime() function
1061
1062 =item Time::tm
1063
1064 Internal object used by Time::gmtime and Time::localtime
1065
1066 =item UNIVERSAL
1067
1068 Base class for ALL classes (blessed references)
1069
1070 =item Unicode::Collate
1071
1072 Unicode Collation Algorithm
1073
1074 =item Unicode::UCD
1075
1076 Unicode character database
1077
1078 =item User::grent
1079
1080 By-name interface to Perl's built-in getgr*() functions
1081
1082 =item User::pwent
1083
1084 By-name interface to Perl's built-in getpw*() functions
1085
1086 =item Win32
1087
1088 Interfaces to some Win32 API Functions
1089
1090 =back
1091
1092 To find out I<all> modules installed on your system, including
1093 those without documentation or outside the standard release,
1094 just do this:
1095
1096     % find `perl -e 'print "@INC"'` -name '*.pm' -print
1097
1098 They should all have their own documentation installed and accessible
1099 via your system man(1) command.  If you do not have a B<find>
1100 program, you can use the Perl B<find2perl> program instead, which
1101 generates Perl code as output you can run through perl.  If you
1102 have a B<man> program but it doesn't find your modules, you'll have
1103 to fix your manpath.  See L<perl> for details.  If you have no
1104 system B<man> command, you might try the B<perldoc> program.
1105
1106 =head2 Extension Modules
1107
1108 Extension modules are written in C (or a mix of Perl and C).  They
1109 are usually dynamically loaded into Perl if and when you need them,
1110 but may also be linked in statically.  Supported extension modules
1111 include Socket, Fcntl, and POSIX.
1112
1113 Many popular C extension modules do not come bundled (at least, not
1114 completely) due to their sizes, volatility, or simply lack of time
1115 for adequate testing and configuration across the multitude of
1116 platforms on which Perl was beta-tested.  You are encouraged to
1117 look for them on CPAN (described below), or using web search engines
1118 like Alta Vista or Deja News.
1119
1120 =head1 CPAN
1121
1122 CPAN stands for Comprehensive Perl Archive Network; it's a globally
1123 replicated trove of Perl materials, including documentation, style
1124 guides, tricks and traps, alternate ports to non-Unix systems and
1125 occasional binary distributions for these.   Search engines for
1126 CPAN can be found at http://www.cpan.org/
1127
1128 Most importantly, CPAN includes around a thousand unbundled modules,
1129 some of which require a C compiler to build.  Major categories of
1130 modules are:
1131
1132 =over
1133
1134 =item *
1135
1136 Language Extensions and Documentation Tools
1137
1138 =item *
1139
1140 Development Support
1141
1142 =item *
1143
1144 Operating System Interfaces
1145
1146 =item *
1147
1148 Networking, Device Control (modems) and InterProcess Communication
1149
1150 =item *
1151
1152 Data Types and Data Type Utilities
1153
1154 =item *
1155
1156 Database Interfaces
1157
1158 =item *
1159
1160 User Interfaces
1161
1162 =item *
1163
1164 Interfaces to / Emulations of Other Programming Languages
1165
1166 =item *
1167
1168 File Names, File Systems and File Locking (see also File Handles)
1169
1170 =item *
1171
1172 String Processing, Language Text Processing, Parsing, and Searching
1173
1174 =item *
1175
1176 Option, Argument, Parameter, and Configuration File Processing
1177
1178 =item *
1179
1180 Internationalization and Locale
1181
1182 =item *
1183
1184 Authentication, Security, and Encryption
1185
1186 =item *
1187
1188 World Wide Web, HTML, HTTP, CGI, MIME
1189
1190 =item *
1191
1192 Server and Daemon Utilities
1193
1194 =item *
1195
1196 Archiving and Compression
1197
1198 =item *
1199
1200 Images, Pixmap and Bitmap Manipulation, Drawing, and Graphing
1201
1202 =item *
1203
1204 Mail and Usenet News
1205
1206 =item *
1207
1208 Control Flow Utilities (callbacks and exceptions etc)
1209
1210 =item *
1211
1212 File Handle and Input/Output Stream Utilities
1213
1214 =item *
1215
1216 Miscellaneous Modules
1217
1218 =back
1219
1220 Registered CPAN sites as of this writing include the following.
1221 You should try to choose one close to you:
1222
1223 =head2 Africa
1224
1225 =over 4
1226
1227 =item *
1228
1229 South Africa
1230
1231     ftp://ftp.is.co.za/programming/perl/CPAN/
1232     ftp://ftp.mweb.co.za/pub/mirrors/cpan/
1233     ftp://ftp.saix.net/pub/CPAN/
1234     ftp://ftp.sun.ac.za/CPAN/CPAN/
1235
1236 =back
1237
1238 =head2 Asia
1239
1240 =over 4
1241
1242 =item *
1243
1244 China
1245
1246     ftp://freesoft.cei.gov.cn/pub/languages/perl/CPAN/
1247     http://www2.linuxforum.net/mirror/CPAN/
1248     http://cpan.shellhung.org/
1249     ftp://ftp.shellhung.org/pub/CPAN
1250
1251 =item *
1252
1253 India
1254
1255     http://cpan.in.freeos.com
1256     ftp://cpan.in.freeos.com/pub/CPAN/
1257
1258 =item *
1259
1260 Indonesia
1261
1262     http://cpan.itb.web.id/
1263     ftp://mirrors.piksi.itb.ac.id/CPAN/
1264     http://CPAN.mweb.co.id/
1265     ftp://ftp.mweb.co.id/pub/languages/perl/CPAN/
1266
1267 =item *
1268
1269 Israel
1270
1271     http://www.iglu.org.il:/pub/CPAN/
1272     ftp://ftp.iglu.org.il/pub/CPAN/
1273     http://cpan.lerner.co.il/
1274     http://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/
1275     ftp://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/
1276
1277 =item *
1278
1279 Japan
1280
1281     ftp://ftp.u-aizu.ac.jp/pub/CPAN
1282     ftp://ftp.kddlabs.co.jp/CPAN/
1283     http://mirror.nucba.ac.jp/mirror/Perl/
1284     ftp://mirror.nucba.ac.jp/mirror/Perl/
1285     ftp://ftp.meisei-u.ac.jp/pub/CPAN/
1286     ftp://ftp.ayamura.org/pub/CPAN/
1287     ftp://ftp.jaist.ac.jp/pub/lang/perl/CPAN/
1288     ftp://ftp.dti.ad.jp/pub/lang/CPAN/
1289     ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/
1290
1291 =item *
1292
1293 Korea
1294
1295     http://mirror.Mazic.org/pub/CPAN
1296     ftp://mirror.Mazic.org/pub/CPAN
1297
1298 =item *
1299
1300 Philippines
1301
1302     http://www.adzu.edu.ph/CPAN
1303
1304 =item *
1305
1306 Russian Federation
1307
1308     http://cpan.tomsk.ru
1309     ftp://cpan.tomsk.ru/pub/CPAN
1310
1311 =item *
1312
1313 Saudi Arabia
1314
1315     ftp://ftp.isu.net.sa/pub/CPAN/
1316
1317 =item *
1318
1319 Singapore
1320
1321     http://cpan.hjc.edu.sg
1322
1323 =item *
1324
1325 South Korea
1326
1327     http://CPAN.bora.net/
1328     ftp://ftp.bora.net/pub/CPAN/
1329     http://ftp.kornet.net/pub/CPAN/
1330     ftp://ftp.kornet.net/pub/CPAN/
1331     ftp://ftp.nuri.net/pub/CPAN/
1332     http://ftp.xgate.co.kr/cpan/
1333     ftp://ftp.xgate.co.kr/pub/mirror/CPAN
1334
1335 =item *
1336
1337 Taiwan
1338
1339     ftp://ftp.ee.ncku.edu.tw/pub/perl/CPAN/
1340     ftp://ftp1.sinica.edu.tw/pub1/perl/CPAN/
1341     http://ftp.tku.edu.tw/pub/CPAN/
1342     ftp://ftp.tku.edu.tw/pub/CPAN/
1343
1344 =item *
1345
1346 Thailand
1347
1348     ftp://ftp.cs.riubon.ac.th/pub/mirrors/CPAN/
1349
1350 =back
1351
1352 =head2 Central America
1353
1354 =over 4
1355
1356 =item *
1357
1358 Costa Rica
1359
1360     ftp://ftp.linux.co.cr/mirrors/CPAN/
1361     http://ftp.ucr.ac.cr/Unix/CPAN/
1362     ftp://ftp.ucr.ac.cr/pub/Unix/CPAN/
1363
1364 =back
1365
1366 =head2 Europe
1367
1368 =over 4
1369
1370 =item *
1371
1372 Austria
1373
1374     ftp://ftp.tuwien.ac.at/pub/CPAN/
1375
1376 =item *
1377
1378 Belgium
1379
1380     http://ftp.easynet.be/pub/CPAN/
1381     ftp://ftp.easynet.be/pub/CPAN/
1382     http://cpan.skynet.be
1383     ftp://ftp.skynet.be/pub/CPAN
1384     ftp://ftp.kulnet.kuleuven.ac.be/pub/mirror/CPAN/
1385
1386 =item *
1387
1388 Bulgaria
1389
1390     http://cpan.lirex.net/
1391     ftp://ftp.lirex.net/pub/mirrors/CPAN
1392
1393 =item *
1394
1395 Croatia
1396
1397     ftp://ftp.linux.hr/pub/CPAN/
1398
1399 =item *
1400
1401 Czech Republic
1402
1403     http://ftp.fi.muni.cz/pub/CPAN/
1404     ftp://ftp.fi.muni.cz/pub/CPAN/
1405     ftp://sunsite.mff.cuni.cz/MIRRORS/ftp.funet.fi/pub/languages/perl/CPAN/
1406
1407 =item *
1408
1409 Denmark
1410
1411     http://mirrors.sunsite.dk/cpan/
1412     ftp://sunsite.dk/mirrors/cpan/
1413     http://www.cpan.dk/CPAN/
1414     ftp://www.cpan.dk/ftp.cpan.org/CPAN/
1415
1416 =item *
1417
1418 Estonia
1419
1420     ftp://ftp.ut.ee/pub/languages/perl/CPAN/
1421
1422 =item *
1423
1424 Finland
1425
1426     ftp://ftp.funet.fi/pub/languages/perl/CPAN/
1427     http://cpan.kpnqwest.fi/
1428
1429 =item *
1430
1431 France
1432
1433     http://cpan.mirrors.easynet.fr/
1434     ftp://cpan.mirrors.easynet.fr/pub/ftp.cpan.org/
1435     ftp://ftp.club-internet.fr/pub/perl/CPAN/
1436     http://fr.cpan.org/
1437     ftp://ftp.lip6.fr/pub/perl/CPAN/
1438     ftp://ftp.oleane.net/pub/mirrors/CPAN/
1439     ftp://ftp.pasteur.fr/pub/computing/CPAN/
1440     http://cpan.cict.fr/
1441     ftp://cpan.cict.fr/pub/CPAN/
1442     ftp://ftp.uvsq.fr/pub/perl/CPAN/
1443
1444 =item *
1445
1446 Germany
1447
1448     ftp://ftp.rz.ruhr-uni-bochum.de/pub/CPAN/
1449     ftp://ftp.freenet.de/pub/ftp.cpan.org/pub/CPAN/
1450     ftp://ftp.uni-erlangen.de/pub/source/CPAN/
1451     ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/CPAN
1452     ftp://ftp.gigabell.net/pub/CPAN/
1453     http://pandemonium.tiscali.de/pub/CPAN/
1454     ftp://pandemonium.tiscali.de/pub/CPAN/
1455     http://ftp.gwdg.de/pub/languages/perl/CPAN/
1456     ftp://ftp.gwdg.de/pub/languages/perl/CPAN/
1457     ftp://ftp.uni-hamburg.de/pub/soft/lang/perl/CPAN/
1458     ftp://ftp.leo.org/pub/CPAN/
1459     http://cpan.noris.de/
1460     ftp://cpan.noris.de/pub/CPAN/
1461     ftp://ftp.mpi-sb.mpg.de/pub/perl/CPAN/
1462     ftp://ftp.gmd.de/mirrors/CPAN/
1463
1464 =item *
1465
1466 Greece
1467
1468     ftp://ftp.acn.gr/pub/lang/perl/CPAN
1469     ftp://ftp.forthnet.gr/pub/languages/perl/CPAN
1470     ftp://ftp.ntua.gr/pub/lang/perl/
1471
1472 =item *
1473
1474 Hungary
1475
1476     http://cpan.artifact.hu/
1477     ftp://cpan.artifact.hu/CPAN/
1478     http://ftp.kfki.hu/packages/perl/CPAN/
1479     ftp://ftp.kfki.hu/pub/packages/perl/CPAN/
1480
1481 =item *
1482
1483 Iceland
1484
1485     http://ftp.rhnet.is/pub/CPAN/
1486     ftp://ftp.rhnet.is/pub/CPAN/
1487
1488 =item *
1489
1490 Ireland
1491
1492     http://cpan.indigo.ie/
1493     ftp://cpan.indigo.ie/pub/CPAN/
1494     http://sunsite.compapp.dcu.ie/pub/perl/
1495     ftp://sunsite.compapp.dcu.ie/pub/perl/
1496
1497 =item *
1498
1499 Italy
1500
1501     http://cpan.nettuno.it/
1502     http://gusp.dyndns.org/CPAN/
1503     ftp://gusp.dyndns.org/pub/CPAN
1504     http://softcity.iol.it/cpan
1505     ftp://softcity.iol.it/pub/cpan
1506     ftp://ftp.unina.it/pub/Other/CPAN/CPAN/
1507     ftp://ftp.unipi.it/pub/mirror/perl/CPAN/
1508     ftp://cis.uniRoma2.it/CPAN/
1509     ftp://ftp.edisontel.it/pub/CPAN_Mirror/
1510     ftp://ftp.flashnet.it/pub/CPAN/
1511
1512 =item *
1513
1514 Latvia
1515
1516     http://kvin.lv/pub/CPAN/
1517
1518 =item *
1519
1520 Lithuania
1521
1522     ftp://ftp.unix.lt/pub/CPAN/
1523
1524 =item *
1525
1526 Netherlands
1527
1528     ftp://download.xs4all.nl/pub/mirror/CPAN/
1529     ftp://ftp.nl.uu.net/pub/CPAN/
1530     ftp://ftp.nluug.nl/pub/languages/perl/CPAN/
1531     ftp://ftp.cpan.nl/pub/CPAN/
1532     http://www.cs.uu.nl/mirror/CPAN/
1533     ftp://ftp.cs.uu.nl/mirror/CPAN/
1534
1535 =item *
1536
1537 Norway
1538
1539     ftp://ftp.uninett.no/pub/languages/perl/CPAN
1540     ftp://ftp.uit.no/pub/languages/perl/cpan/
1541
1542 =item *
1543
1544 Poland
1545
1546     ftp://ftp.pk.edu.pl/pub/lang/perl/CPAN/
1547     ftp://ftp.mega.net.pl/pub/mirrors/ftp.perl.com/
1548     ftp://ftp.man.torun.pl/pub/doc/CPAN/
1549     ftp://sunsite.icm.edu.pl/pub/CPAN/
1550
1551 =item *
1552
1553 Portugal
1554
1555     ftp://ftp.ua.pt/pub/CPAN/
1556     ftp://perl.di.uminho.pt/pub/CPAN/
1557     http://cpan.dei.uc.pt/
1558     ftp://ftp.dei.uc.pt/pub/CPAN
1559     ftp://ftp.ist.utl.pt/pub/CPAN/
1560     http://cpan.ip.pt/
1561     ftp://cpan.ip.pt/pub/cpan/
1562     ftp://ftp.netc.pt/pub/CPAN/
1563     ftp://ftp.up.pt/pub/CPAN
1564
1565 =item *
1566
1567 Romania
1568
1569     ftp://ftp.kappa.ro/pub/mirrors/ftp.perl.org/pub/CPAN/
1570     ftp://ftp.dntis.ro/pub/cpan/
1571     ftp://ftp.dnttm.ro/pub/CPAN/
1572     ftp://ftp.lasting.ro/pub/CPAN
1573     ftp://ftp.timisoara.roedu.net/mirrors/CPAN/
1574
1575 =item *
1576
1577 Russia
1578
1579     ftp://ftp.chg.ru/pub/lang/perl/CPAN/
1580     http://cpan.rinet.ru/
1581     ftp://cpan.rinet.ru/pub/mirror/CPAN/
1582     ftp://ftp.aha.ru/pub/CPAN/
1583     http://cpan.sai.msu.ru/
1584     ftp://ftp.sai.msu.su/pub/lang/perl/CPAN/
1585
1586 =item *
1587
1588 Slovakia
1589
1590     http://ftp.cvt.stuba.sk/pub/CPAN/
1591     ftp://ftp.cvt.stuba.sk/pub/CPAN/
1592
1593 =item *
1594
1595 Slovenia
1596
1597     ftp://ftp.arnes.si/software/perl/CPAN/
1598
1599 =item *
1600
1601 Spain
1602
1603     http://cpan.imasd.elmundo.es/
1604     ftp://ftp.rediris.es/mirror/CPAN/
1605     ftp://ftp.etse.urv.es/pub/perl/
1606
1607 =item *
1608
1609 Sweden
1610
1611     http://ftp.du.se/CPAN/
1612     ftp://ftp.du.se/pub/CPAN/
1613     ftp://mirror.dataphone.se/pub/CPAN
1614     ftp://ftp.sunet.se/pub/lang/perl/CPAN/
1615
1616 =item *
1617
1618 Switzerland
1619
1620     ftp://ftp.danyk.ch/CPAN/
1621     ftp://sunsite.cnlab-switch.ch/mirror/CPAN/
1622
1623 =item *
1624
1625 Turkey
1626
1627     ftp://sunsite.bilkent.edu.tr/pub/languages/CPAN/
1628
1629 =item *
1630
1631 Ukraine
1632
1633     http://cpan.org.ua/
1634     ftp://cpan.org.ua/
1635     ftp://ftp.perl.org.ua/pub/CPAN/
1636
1637 =item *
1638
1639 United Kingdom
1640
1641     http://www.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN
1642     ftp://ftp.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN/
1643     http://cpan.teleglobe.net/
1644     ftp://cpan.teleglobe.net/pub/CPAN
1645     http://cpan.crazygreek.co.uk
1646     ftp://ftp.demon.co.uk/pub/CPAN/
1647     ftp://ftp.flirble.org/pub/languages/perl/CPAN/
1648     ftp://ftp.plig.org/pub/CPAN/
1649     http://mirror.uklinux.net/CPAN/
1650     ftp://mirror.uklinux.net/pub/CPAN/
1651     http://cpan.mirrors.clockerz.net/
1652     ftp://ftp.clockerz.net/pub/CPAN/
1653     ftp://usit.shef.ac.uk/pub/packages/CPAN/
1654
1655 =back
1656
1657 =head2 North America
1658
1659 =over 4
1660
1661 =item *
1662
1663 Canada
1664
1665 =over 8
1666
1667 =item *
1668
1669 Alberta
1670
1671     http://sunsite.ualberta.ca/pub/Mirror/CPAN/
1672     ftp://sunsite.ualberta.ca/pub/Mirror/CPAN/
1673
1674 =item *
1675
1676 Manitoba
1677
1678     http://theoryx5.uwinnipeg.ca/pub/CPAN/
1679     ftp://theoryx5.uwinnipeg.ca/pub/CPAN/
1680
1681 =item *
1682
1683 Nova Scotia
1684
1685     ftp://cpan.chebucto.ns.ca/pub/CPAN/
1686
1687 =item *
1688
1689 Ontario
1690
1691     ftp://ftp.crc.ca/pub/CPAN/
1692
1693 =item *
1694
1695 Quebec
1696
1697     http://cpan.mirror.smartworker.org/
1698
1699 =back
1700
1701 =item *
1702
1703 Mexico
1704
1705     http://cpan.azc.uam.mx
1706     ftp://cpan.azc.uam.mx/mirrors/CPAN
1707     http://cpan.unam.mx/
1708     ftp://cpan.unam.mx/pub/CPAN
1709     http://www.msg.com.mx/CPAN/
1710     ftp://ftp.msg.com.mx/pub/CPAN/
1711
1712 =item *
1713
1714 United States
1715
1716 =over 8
1717
1718 =item *
1719
1720 Alabama
1721
1722     http://mirror.hiwaay.net/CPAN/
1723     ftp://mirror.hiwaay.net/CPAN/
1724
1725 =item *
1726
1727 California
1728
1729     http://www.cpan.org/
1730     ftp://cpan.valueclick.com/pub/CPAN/
1731     http://mirrors.gossamer-threads.com/CPAN
1732     ftp://cpan.nas.nasa.gov/pub/perl/CPAN/
1733     http://mirrors.kernel.org/cpan/
1734     ftp://mirrors.kernel.org/pub/CPAN
1735     http://cpan.digisle.net/
1736     ftp://cpan.digisle.net/pub/CPAN
1737     http://www.perl.com/CPAN/
1738     http://download.sourceforge.net/mirrors/CPAN/
1739
1740 =item *
1741
1742 Colorado
1743
1744     ftp://ftp.cs.colorado.edu/pub/perl/CPAN/
1745
1746 =item *
1747
1748 Delaware
1749
1750     http://ftp.lug.udel.edu/pub/CPAN
1751     ftp://ftp.lug.udel.edu/pub/CPAN
1752
1753 =item *
1754
1755 District of Columbia
1756
1757     ftp://ftp.dc.aleron.net/pub/CPAN/
1758
1759 =item *
1760
1761 Florida
1762
1763     ftp://ftp.cise.ufl.edu/pub/mirrors/CPAN/
1764     http://mirror.csit.fsu.edu/pub/CPAN/
1765     ftp://mirror.csit.fsu.edu/pub/CPAN/
1766
1767 =item *
1768
1769 Illinois
1770
1771     http://uiarchive.uiuc.edu/mirrors/ftp/cpan.cse.msu.edu/
1772     ftp://uiarchive.uiuc.edu/mirrors/ftp/cpan.cse.msu.edu/
1773
1774 =item *
1775
1776 Indiana
1777
1778     ftp://ftp.uwsg.iu.edu/pub/perl/CPAN/
1779     http://cpan.netnitco.net/
1780     ftp://cpan.netnitco.net/pub/mirrors/CPAN/
1781     http://archive.progeny.com/CPAN/
1782     ftp://archive.progeny.com/CPAN/
1783     ftp://cpan.in-span.net/
1784     http://csociety-ftp.ecn.purdue.edu/pub/CPAN
1785     ftp://csociety-ftp.ecn.purdue.edu/pub/CPAN
1786
1787 =item *
1788
1789 Kentucky
1790
1791     http://cpan.uky.edu/
1792     ftp://cpan.uky.edu/pub/CPAN/
1793
1794 =item *
1795
1796 Massachusetts
1797
1798     ftp://ftp.ccs.neu.edu/net/mirrors/ftp.funet.fi/pub/languages/perl/CPAN/
1799     http://cpan.mirrors.netnumina.com/
1800     ftp://mirrors.netnumina.com/cpan/
1801
1802 =item *
1803
1804 Michigan
1805
1806     ftp://cpan.cse.msu.edu/
1807
1808 =item *
1809
1810 New Jersey
1811
1812     ftp://ftp.cpanel.net/pub/CPAN/
1813     http://cpan.teleglobe.net/
1814     ftp://cpan.teleglobe.net/pub/CPAN
1815
1816 =item *
1817
1818 New York
1819
1820     ftp://ftp.exobit.org/pub/perl/CPAN
1821     http://cpan.belfry.net/
1822     http://cpan.thepirtgroup.com/
1823     ftp://cpan.thepirtgroup.com/
1824     ftp://ftp.stealth.net/pub/CPAN/
1825     http://www.rge.com/pub/languages/perl/
1826     ftp://ftp.rge.com/pub/languages/perl/
1827     ftp://mirrors.cloud9.net/pub/mirrors/CPAN/
1828
1829 =item *
1830
1831 North Carolina
1832
1833     ftp://ftp.duke.edu/pub/perl/
1834
1835 =item *
1836
1837 Ohio
1838
1839     ftp://ftp.loaded.net/pub/CPAN/
1840
1841 =item *
1842
1843 Oklahoma
1844
1845     ftp://ftp.ou.edu/mirrors/CPAN/
1846
1847 =item *
1848
1849 Oregon
1850
1851     ftp://ftp.orst.edu/pub/CPAN
1852
1853 =item *
1854
1855 Pennsylvania
1856
1857     http://ftp.epix.net/CPAN/
1858     ftp://ftp.epix.net/pub/languages/perl/
1859     http://mirrors.phenominet.com/pub/CPAN/
1860     ftp://mirrors.phenominet.com/pub/CPAN/
1861     http://cpan.pair.com/
1862     ftp://cpan.pair.com/pub/CPAN/
1863     ftp://carroll.cac.psu.edu/pub/CPAN/
1864
1865 =item *
1866
1867 Tennessee
1868
1869     ftp://ftp.sunsite.utk.edu/pub/CPAN/
1870
1871 =item *
1872
1873 Texas
1874
1875     http://ftp.sedl.org/pub/mirrors/CPAN/
1876     ftp://mirror.telentente.com/pub/CPAN
1877
1878 =item *
1879
1880 Utah
1881
1882     ftp://mirror.xmission.com/CPAN/
1883
1884 =item *
1885
1886 Virginia
1887
1888     http://mirrors.rcn.net/pub/lang/CPAN/
1889     ftp://mirrors.rcn.net/pub/lang/CPAN/
1890     http://perl.secsup.org/
1891     ftp://perl.secsup.org/pub/perl/
1892     http://mirrors.phihost.com/CPAN/
1893     ftp://mirrors.phihost.com/CPAN/
1894     ftp://ruff.cs.jmu.edu/pub/CPAN/
1895     http://perl.Liquidation.com/CPAN/
1896
1897 =item *
1898
1899 Washington
1900
1901     http://cpan.llarian.net/
1902     ftp://cpan.llarian.net/pub/CPAN/
1903     http://cpan.mirrorcentral.com/
1904     ftp://ftp.mirrorcentral.com/pub/CPAN/
1905     ftp://ftp-mirror.internap.com/pub/CPAN/
1906
1907 =item *
1908
1909 Wisconsin
1910
1911     http://mirror.sit.wisc.edu/pub/CPAN/
1912     ftp://mirror.sit.wisc.edu/pub/CPAN/
1913
1914 =back
1915
1916 =head2 Oceania
1917
1918 =over 4
1919
1920 =item *
1921
1922 Australia
1923
1924     http://ftp.planetmirror.com/pub/CPAN/
1925     ftp://ftp.planetmirror.com/pub/CPAN/
1926     ftp://mirror.aarnet.edu.au/pub/perl/CPAN/
1927     ftp://cpan.topend.com.au/pub/CPAN/
1928
1929 =item *
1930
1931 New Zealand
1932
1933     ftp://ftp.auckland.ac.nz/pub/perl/CPAN/
1934
1935 =back
1936
1937 =head2 South America
1938
1939 =over 4
1940
1941 =item *
1942
1943 Argentina
1944
1945     ftp://mirrors.bannerlandia.com.ar/mirrors/CPAN/
1946
1947 =item *
1948
1949 Brazil
1950
1951     ftp://cpan.pop-mg.com.br/pub/CPAN/
1952     ftp://ftp.matrix.com.br/pub/perl/CPAN/
1953
1954 =item *
1955
1956 Chile
1957
1958     ftp://ftp.psinet.cl/pub/programming/perl/CPAN/
1959
1960 =back
1961
1962 For an up-to-date listing of CPAN sites,
1963 see http://www.cpan.org/SITES or ftp://www.cpan.org/SITES .
1964
1965 =head1 Modules: Creation, Use, and Abuse
1966
1967 (The following section is borrowed directly from Tim Bunce's modules
1968 file, available at your nearest CPAN site.)
1969
1970 Perl implements a class using a package, but the presence of a
1971 package doesn't imply the presence of a class.  A package is just a
1972 namespace.  A class is a package that provides subroutines that can be
1973 used as methods.  A method is just a subroutine that expects, as its
1974 first argument, either the name of a package (for "static" methods),
1975 or a reference to something (for "virtual" methods).
1976
1977 A module is a file that (by convention) provides a class of the same
1978 name (sans the .pm), plus an import method in that class that can be
1979 called to fetch exported symbols.  This module may implement some of
1980 its methods by loading dynamic C or C++ objects, but that should be
1981 totally transparent to the user of the module.  Likewise, the module
1982 might set up an AUTOLOAD function to slurp in subroutine definitions on
1983 demand, but this is also transparent.  Only the F<.pm> file is required to
1984 exist.  See L<perlsub>, L<perltoot>, and L<AutoLoader> for details about
1985 the AUTOLOAD mechanism.
1986
1987 =head2 Guidelines for Module Creation
1988
1989 =over 4
1990
1991 =item  *
1992
1993 Do similar modules already exist in some form?
1994
1995 If so, please try to reuse the existing modules either in whole or
1996 by inheriting useful features into a new class.  If this is not
1997 practical try to get together with the module authors to work on
1998 extending or enhancing the functionality of the existing modules.
1999 A perfect example is the plethora of packages in perl4 for dealing
2000 with command line options.
2001
2002 If you are writing a module to expand an already existing set of
2003 modules, please coordinate with the author of the package.  It
2004 helps if you follow the same naming scheme and module interaction
2005 scheme as the original author.
2006
2007 =item  *
2008
2009 Try to design the new module to be easy to extend and reuse.
2010
2011 Try to C<use warnings;> (or C<use warnings qw(...);>).
2012 Remember that you can add C<no warnings qw(...);> to individual blocks
2013 of code that need less warnings.
2014
2015 Use blessed references.  Use the two argument form of bless to bless
2016 into the class name given as the first parameter of the constructor,
2017 e.g.,:
2018
2019  sub new {
2020      my $class = shift;
2021      return bless {}, $class;
2022  }
2023
2024 or even this if you'd like it to be used as either a static
2025 or a virtual method.
2026
2027  sub new {
2028      my $self  = shift;
2029      my $class = ref($self) || $self;
2030      return bless {}, $class;
2031  }
2032
2033 Pass arrays as references so more parameters can be added later
2034 (it's also faster).  Convert functions into methods where
2035 appropriate.  Split large methods into smaller more flexible ones.
2036 Inherit methods from other modules if appropriate.
2037
2038 Avoid class name tests like: C<die "Invalid" unless ref $ref eq 'FOO'>.
2039 Generally you can delete the C<eq 'FOO'> part with no harm at all.
2040 Let the objects look after themselves! Generally, avoid hard-wired
2041 class names as far as possible.
2042
2043 Avoid C<< $r->Class::func() >> where using C<@ISA=qw(... Class ...)> and
2044 C<< $r->func() >> would work (see L<perlbot> for more details).
2045
2046 Use autosplit so little used or newly added functions won't be a
2047 burden to programs that don't use them. Add test functions to
2048 the module after __END__ either using AutoSplit or by saying:
2049
2050  eval join('',<main::DATA>) || die $@ unless caller();
2051
2052 Does your module pass the 'empty subclass' test? If you say
2053 C<@SUBCLASS::ISA = qw(YOURCLASS);> your applications should be able
2054 to use SUBCLASS in exactly the same way as YOURCLASS.  For example,
2055 does your application still work if you change:  C<$obj = new YOURCLASS;>
2056 into: C<$obj = new SUBCLASS;> ?
2057
2058 Avoid keeping any state information in your packages. It makes it
2059 difficult for multiple other packages to use yours. Keep state
2060 information in objects.
2061
2062 Always use B<-w>.
2063
2064 Try to C<use strict;> (or C<use strict qw(...);>).
2065 Remember that you can add C<no strict qw(...);> to individual blocks
2066 of code that need less strictness.
2067
2068 Always use B<-w>.
2069
2070 Follow the guidelines in the perlstyle(1) manual.
2071
2072 Always use B<-w>.
2073
2074 =item  *
2075
2076 Some simple style guidelines
2077
2078 The perlstyle manual supplied with Perl has many helpful points.
2079
2080 Coding style is a matter of personal taste. Many people evolve their
2081 style over several years as they learn what helps them write and
2082 maintain good code.  Here's one set of assorted suggestions that
2083 seem to be widely used by experienced developers:
2084
2085 Use underscores to separate words.  It is generally easier to read
2086 $var_names_like_this than $VarNamesLikeThis, especially for
2087 non-native speakers of English. It's also a simple rule that works
2088 consistently with VAR_NAMES_LIKE_THIS.
2089
2090 Package/Module names are an exception to this rule. Perl informally
2091 reserves lowercase module names for 'pragma' modules like integer
2092 and strict. Other modules normally begin with a capital letter and
2093 use mixed case with no underscores (need to be short and portable).
2094
2095 You may find it helpful to use letter case to indicate the scope
2096 or nature of a variable. For example:
2097
2098  $ALL_CAPS_HERE   constants only (beware clashes with Perl vars)
2099  $Some_Caps_Here  package-wide global/static
2100  $no_caps_here    function scope my() or local() variables
2101
2102 Function and method names seem to work best as all lowercase.
2103 e.g., C<< $obj->as_string() >>.
2104
2105 You can use a leading underscore to indicate that a variable or
2106 function should not be used outside the package that defined it.
2107
2108 =item  *
2109
2110 Select what to export.
2111
2112 Do NOT export method names!
2113
2114 Do NOT export anything else by default without a good reason!
2115
2116 Exports pollute the namespace of the module user.  If you must
2117 export try to use @EXPORT_OK in preference to @EXPORT and avoid
2118 short or common names to reduce the risk of name clashes.
2119
2120 Generally anything not exported is still accessible from outside the
2121 module using the ModuleName::item_name (or C<< $blessed_ref->method >>)
2122 syntax.  By convention you can use a leading underscore on names to
2123 indicate informally that they are 'internal' and not for public use.
2124
2125 (It is actually possible to get private functions by saying:
2126 C<my $subref = sub { ... };  &$subref;>.  But there's no way to call that
2127 directly as a method, because a method must have a name in the symbol
2128 table.)
2129
2130 As a general rule, if the module is trying to be object oriented
2131 then export nothing. If it's just a collection of functions then
2132 @EXPORT_OK anything but use @EXPORT with caution.
2133
2134 =item  *
2135
2136 Select a name for the module.
2137
2138 This name should be as descriptive, accurate, and complete as
2139 possible.  Avoid any risk of ambiguity. Always try to use two or
2140 more whole words.  Generally the name should reflect what is special
2141 about what the module does rather than how it does it.  Please use
2142 nested module names to group informally or categorize a module.
2143 There should be a very good reason for a module not to have a nested name.
2144 Module names should begin with a capital letter.
2145
2146 Having 57 modules all called Sort will not make life easy for anyone
2147 (though having 23 called Sort::Quick is only marginally better :-).
2148 Imagine someone trying to install your module alongside many others.
2149 If in any doubt ask for suggestions in comp.lang.perl.misc.
2150
2151 If you are developing a suite of related modules/classes it's good
2152 practice to use nested classes with a common prefix as this will
2153 avoid namespace clashes. For example: Xyz::Control, Xyz::View,
2154 Xyz::Model etc. Use the modules in this list as a naming guide.
2155
2156 If adding a new module to a set, follow the original author's
2157 standards for naming modules and the interface to methods in
2158 those modules.
2159
2160 If developing modules for private internal or project specific use,
2161 that will never be released to the public, then you should ensure
2162 that their names will not clash with any future public module. You
2163 can do this either by using the reserved Local::* category or by
2164 using a category name that includes an underscore like Foo_Corp::*.
2165
2166 To be portable each component of a module name should be limited to
2167 11 characters. If it might be used on MS-DOS then try to ensure each is
2168 unique in the first 8 characters. Nested modules make this easier.
2169
2170 =item  *
2171
2172 Have you got it right?
2173
2174 How do you know that you've made the right decisions? Have you
2175 picked an interface design that will cause problems later? Have
2176 you picked the most appropriate name? Do you have any questions?
2177
2178 The best way to know for sure, and pick up many helpful suggestions,
2179 is to ask someone who knows. Comp.lang.perl.misc is read by just about
2180 all the people who develop modules and it's the best place to ask.
2181
2182 All you need to do is post a short summary of the module, its
2183 purpose and interfaces. A few lines on each of the main methods is
2184 probably enough. (If you post the whole module it might be ignored
2185 by busy people - generally the very people you want to read it!)
2186
2187 Don't worry about posting if you can't say when the module will be
2188 ready - just say so in the message. It might be worth inviting
2189 others to help you, they may be able to complete it for you!
2190
2191 =item  *
2192
2193 README and other Additional Files.
2194
2195 It's well known that software developers usually fully document the
2196 software they write. If, however, the world is in urgent need of
2197 your software and there is not enough time to write the full
2198 documentation please at least provide a README file containing:
2199
2200 =over 10
2201
2202 =item *
2203
2204 A description of the module/package/extension etc.
2205
2206 =item *
2207
2208 A copyright notice - see below.
2209
2210 =item *
2211
2212 Prerequisites - what else you may need to have.
2213
2214 =item *
2215
2216 How to build it - possible changes to Makefile.PL etc.
2217
2218 =item *
2219
2220 How to install it.
2221
2222 =item *
2223
2224 Recent changes in this release, especially incompatibilities
2225
2226 =item *
2227
2228 Changes / enhancements you plan to make in the future.
2229
2230 =back
2231
2232 If the README file seems to be getting too large you may wish to
2233 split out some of the sections into separate files: INSTALL,
2234 Copying, ToDo etc.
2235
2236 =over 4
2237
2238 =item *
2239
2240 Adding a Copyright Notice.
2241
2242 How you choose to license your work is a personal decision.
2243 The general mechanism is to assert your Copyright and then make
2244 a declaration of how others may copy/use/modify your work.
2245
2246 Perl, for example, is supplied with two types of licence: The GNU
2247 GPL and The Artistic Licence (see the files README, Copying, and
2248 Artistic).  Larry has good reasons for NOT just using the GNU GPL.
2249
2250 My personal recommendation, out of respect for Larry, Perl, and the
2251 Perl community at large is to state something simply like:
2252
2253  Copyright (c) 1995 Your Name. All rights reserved.
2254  This program is free software; you can redistribute it and/or
2255  modify it under the same terms as Perl itself.
2256
2257 This statement should at least appear in the README file. You may
2258 also wish to include it in a Copying file and your source files.
2259 Remember to include the other words in addition to the Copyright.
2260
2261 =item  *
2262
2263 Give the module a version/issue/release number.
2264
2265 To be fully compatible with the Exporter and MakeMaker modules you
2266 should store your module's version number in a non-my package
2267 variable called $VERSION.  This should be a floating point
2268 number with at least two digits after the decimal (i.e., hundredths,
2269 e.g, C<$VERSION = "0.01">).  Don't use a "1.3.2" style version.
2270 See L<Exporter> for details.
2271
2272 It may be handy to add a function or method to retrieve the number.
2273 Use the number in announcements and archive file names when
2274 releasing the module (ModuleName-1.02.tar.Z).
2275 See perldoc ExtUtils::MakeMaker.pm for details.
2276
2277 =item  *
2278
2279 How to release and distribute a module.
2280
2281 It's good idea to post an announcement of the availability of your
2282 module (or the module itself if small) to the comp.lang.perl.announce
2283 Usenet newsgroup.  This will at least ensure very wide once-off
2284 distribution.
2285
2286 If possible, register the module with CPAN.  You should
2287 include details of its location in your announcement.
2288
2289 Some notes about ftp archives: Please use a long descriptive file
2290 name that includes the version number. Most incoming directories
2291 will not be readable/listable, i.e., you won't be able to see your
2292 file after uploading it. Remember to send your email notification
2293 message as soon as possible after uploading else your file may get
2294 deleted automatically. Allow time for the file to be processed
2295 and/or check the file has been processed before announcing its
2296 location.
2297
2298 FTP Archives for Perl Modules:
2299
2300 Follow the instructions and links on:
2301
2302    http://www.cpan.org/modules/00modlist.long.html
2303    http://www.cpan.org/modules/04pause.html
2304
2305 or upload to one of these sites:
2306
2307    https://pause.kbx.de/pause/
2308    http://pause.perl.org/pause/
2309
2310 and notify <modules@perl.org>.
2311
2312 By using the WWW interface you can ask the Upload Server to mirror
2313 your modules from your ftp or WWW site into your own directory on
2314 CPAN!
2315
2316 Please remember to send me an updated entry for the Module list!
2317
2318 =item  *
2319
2320 Take care when changing a released module.
2321
2322 Always strive to remain compatible with previous released versions.
2323 Otherwise try to add a mechanism to revert to the
2324 old behavior if people rely on it.  Document incompatible changes.
2325
2326 =back
2327
2328 =back
2329
2330 =head2 Guidelines for Converting Perl 4 Library Scripts into Modules
2331
2332 =over 4
2333
2334 =item  *
2335
2336 There is no requirement to convert anything.
2337
2338 If it ain't broke, don't fix it! Perl 4 library scripts should
2339 continue to work with no problems. You may need to make some minor
2340 changes (like escaping non-array @'s in double quoted strings) but
2341 there is no need to convert a .pl file into a Module for just that.
2342
2343 =item  *
2344
2345 Consider the implications.
2346
2347 All Perl applications that make use of the script will need to
2348 be changed (slightly) if the script is converted into a module.  Is
2349 it worth it unless you plan to make other changes at the same time?
2350
2351 =item  *
2352
2353 Make the most of the opportunity.
2354
2355 If you are going to convert the script to a module you can use the
2356 opportunity to redesign the interface.  The guidelines for module
2357 creation above include many of the issues you should consider.
2358
2359 =item  *
2360
2361 The pl2pm utility will get you started.
2362
2363 This utility will read *.pl files (given as parameters) and write
2364 corresponding *.pm files. The pl2pm utilities does the following:
2365
2366 =over 10
2367
2368 =item *
2369
2370 Adds the standard Module prologue lines
2371
2372 =item *
2373
2374 Converts package specifiers from ' to ::
2375
2376 =item *
2377
2378 Converts die(...) to croak(...)
2379
2380 =item *
2381
2382 Several other minor changes
2383
2384 =back
2385
2386 Being a mechanical process pl2pm is not bullet proof. The converted
2387 code will need careful checking, especially any package statements.
2388 Don't delete the original .pl file till the new .pm one works!
2389
2390 =back
2391
2392 =head2 Guidelines for Reusing Application Code
2393
2394 =over 4
2395
2396 =item  *
2397
2398 Complete applications rarely belong in the Perl Module Library.
2399
2400 =item  *
2401
2402 Many applications contain some Perl code that could be reused.
2403
2404 Help save the world! Share your code in a form that makes it easy
2405 to reuse.
2406
2407 =item  *
2408
2409 Break-out the reusable code into one or more separate module files.
2410
2411 =item  *
2412
2413 Take the opportunity to reconsider and redesign the interfaces.
2414
2415 =item  *
2416
2417 In some cases the 'application' can then be reduced to a small
2418
2419 fragment of code built on top of the reusable modules. In these cases
2420 the application could invoked as:
2421
2422      % perl -e 'use Module::Name; method(@ARGV)' ...
2423 or
2424      % perl -mModule::Name ...    (in perl5.002 or higher)
2425
2426 =back
2427
2428 =head1 NOTE
2429
2430 Perl does not enforce private and public parts of its modules as you may
2431 have been used to in other languages like C++, Ada, or Modula-17.  Perl
2432 doesn't have an infatuation with enforced privacy.  It would prefer
2433 that you stayed out of its living room because you weren't invited, not
2434 because it has a shotgun.
2435
2436 The module and its user have a contract, part of which is common law,
2437 and part of which is "written".  Part of the common law contract is
2438 that a module doesn't pollute any namespace it wasn't asked to.  The
2439 written contract for the module (A.K.A. documentation) may make other
2440 provisions.  But then you know when you C<use RedefineTheWorld> that
2441 you're redefining the world and willing to take the consequences.