This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
c5afea214e4ffae08f85fad910fdb9c870925ba7
[perl5.git] / pod / perlmodlib.pod
1 =head1 NAME
2
3 perlmodlib - constructing new Perl modules and finding existing ones
4
5 =head1 DESCRIPTION
6
7 =head1 THE PERL MODULE LIBRARY
8
9 Many modules are included the Perl distribution.  These are described
10 below, and all end in F<.pm>.  You may discover compiled library
11 file (usually ending in F<.so>) or small pieces of modules to be
12 autoloaded (ending in F<.al>); these were automatically generated
13 by the installation process.  You may also discover files in the
14 library directory that end in either F<.pl> or F<.ph>.  These are
15 old libraries supplied so that old programs that use them still
16 run.  The F<.pl> files will all eventually be converted into standard
17 modules, and the F<.ph> files made by B<h2ph> will probably end up
18 as extension modules made by B<h2xs>.  (Some F<.ph> values may
19 already be available through the POSIX, Errno, or Fcntl modules.)
20 The B<pl2pm> file in the distribution may help in your conversion,
21 but it's just a mechanical process and therefore far from bulletproof.
22
23 =head2 Pragmatic Modules
24
25 They work somewhat like compiler directives (pragmata) in that they
26 tend to affect the compilation of your program, and thus will usually
27 work well only when used within a C<use>, or C<no>.  Most of these
28 are lexically scoped, so an inner BLOCK may countermand them
29 by saying:
30
31     no integer;
32     no strict 'refs';
33     no warnings;
34
35 which lasts until the end of that BLOCK.
36
37 Some pragmas are lexically scoped--typically those that affect the
38 C<$^H> hints variable.  Others affect the current package instead,
39 like C<use vars> and C<use subs>, which allow you to predeclare a
40 variables or subroutines within a particular I<file> rather than
41 just a block.  Such declarations are effective for the entire file
42 for which they were declared.  You cannot rescind them with C<no
43 vars> or C<no subs>.
44
45 The following pragmas are defined (and have their own documentation).
46
47 =over 12
48
49 =item attributes
50
51 Get/set subroutine or variable attributes
52
53 =item attrs
54
55 Set/get attributes of a subroutine (deprecated)
56
57 =item autouse
58
59 Postpone load of modules until a function is used
60
61 =item base
62
63 Establish IS-A relationship with base class at compile time
64
65 =item blib
66
67 Use MakeMaker's uninstalled version of a package
68
69 =item bytes
70
71 Force byte semantics rather than character semantics
72
73 =item charnames
74
75 Define character names for C<\N{named}> string literal escape.
76
77 =item constant
78
79 Declare constants
80
81 =item diagnostics
82
83 Perl compiler pragma to force verbose warning diagnostics
84
85 =item fields
86
87 Compile-time class fields
88
89 =item filetest
90
91 Control the filetest permission operators
92
93 =item integer
94
95 Compute arithmetic in integer instead of double
96
97 =item less
98
99 Request less of something from the compiler
100
101 =item locale
102
103 Use and avoid POSIX locales for built-in operations
104
105 =item open
106
107 Set default disciplines for input and output
108
109 =item ops
110
111 Restrict unsafe operations when compiling
112
113 =item overload
114
115 Package for overloading perl operations
116
117 =item re
118
119 Alter regular expression behaviour
120
121 =item sigtrap
122
123 Enable simple signal handling
124
125 =item strict
126
127 Restrict unsafe constructs
128
129 =item subs
130
131 Predeclare sub names
132
133 =item utf8
134
135 Enable/disable UTF-8 in source code
136
137 =item vars
138
139 Predeclare global variable names (obsolete)
140
141 =item warnings
142
143 Control optional warnings
144
145 =item warnings::register
146
147 Warnings import function
148
149 =back
150
151 =head2 Standard Modules
152
153 Standard, bundled modules are all expected to behave in a well-defined
154 manner with respect to namespace pollution because they use the
155 Exporter module.  See their own documentation for details.
156
157 =over 12
158
159 =item AnyDBM_File
160
161 Provide framework for multiple DBMs
162
163 =item AutoLoader
164
165 Load subroutines only on demand
166
167 =item AutoSplit
168
169 Split a package for autoloading
170
171 =item B
172
173 The Perl Compiler
174
175 =item B::Asmdata
176
177 Autogenerated data about Perl ops, used to generate bytecode
178
179 =item B::Assembler
180
181 Assemble Perl bytecode
182
183 =item B::Bblock
184
185 Walk basic blocks
186
187 =item B::Bytecode
188
189 Perl compiler's bytecode backend
190
191 =item B::C
192
193 Perl compiler's C backend
194
195 =item B::CC
196
197 Perl compiler's optimized C translation backend
198
199 =item B::Debug
200
201 Walk Perl syntax tree, printing debug info about ops
202
203 =item B::Deparse
204
205 Perl compiler backend to produce perl code
206
207 =item B::Disassembler
208
209 Disassemble Perl bytecode
210
211 =item B::Lint
212
213 Perl lint
214
215 =item B::Showlex
216
217 Show lexical variables used in functions or files
218
219 =item B::Stackobj
220
221 Helper module for CC backend
222
223 =item B::Stash
224
225 Show what stashes are loaded
226
227 =item B::Terse
228
229 Walk Perl syntax tree, printing terse info about ops
230
231 =item B::Xref
232
233 Generates cross reference reports for Perl programs
234
235 =item Benchmark
236
237 Benchmark running times of Perl code
238
239 =item ByteLoader
240
241 Load byte compiled perl code
242
243 =item CGI
244
245 Simple Common Gateway Interface Class
246
247 =item CGI::Apache
248
249 Backward compatibility module for CGI.pm
250
251 =item CGI::Carp
252
253 CGI routines for writing to the HTTPD (or other) error log
254
255 =item CGI::Cookie
256
257 Interface to Netscape Cookies
258
259 =item CGI::Fast
260
261 CGI Interface for Fast CGI
262
263 =item CGI::Pretty
264
265 Module to produce nicely formatted HTML code
266
267 =item CGI::Push
268
269 Simple Interface to Server Push
270
271 =item CGI::Switch
272
273 Backward compatibility module for defunct CGI::Switch
274
275 =item CPAN
276
277 Query, download and build perl modules from CPAN sites
278
279 =item CPAN::FirstTime
280
281 Utility for CPAN::Config file Initialization
282
283 =item CPAN::Nox
284
285 Wrapper around CPAN.pm without using any XS module
286
287 =item Carp
288
289 Warn of errors (from perspective of caller)
290
291 =item Carp::Heavy
292
293 Carp guts
294
295 =item Class::Struct
296
297 Declare struct-like datatypes as Perl classes
298
299 =item Cwd
300
301 Get pathname of current working directory
302
303 =item DB
304
305 Programmatic interface to the Perl debugging API (draft, subject to
306
307 =item DB_File
308
309 Perl5 access to Berkeley DB version 1.x
310
311 =item Devel::SelfStubber
312
313 Generate stubs for a SelfLoading module
314
315 =item DirHandle
316
317 Supply object methods for directory handles
318
319 =item Dumpvalue
320
321 Provides screen dump of Perl data.
322
323 =item Encode
324
325 Character encodings
326
327 =item English
328
329 Use nice English (or awk) names for ugly punctuation variables
330
331 =item Env
332
333 Perl module that imports environment variables as scalars or arrays
334
335 =item Exporter
336
337 Implements default import method for modules
338
339 =item Exporter::Heavy
340
341 Exporter guts
342
343 =item ExtUtils::Command
344
345 Utilities to replace common UNIX commands in Makefiles etc.
346
347 =item ExtUtils::Embed
348
349 Utilities for embedding Perl in C/C++ applications
350
351 =item ExtUtils::Install
352
353 Install files from here to there
354
355 =item ExtUtils::Installed
356
357 Inventory management of installed modules
358
359 =item ExtUtils::Liblist
360
361 Determine libraries to use and how to use them
362
363 =item ExtUtils::MM_Cygwin
364
365 Methods to override UN*X behaviour in ExtUtils::MakeMaker
366
367 =item ExtUtils::MM_OS2
368
369 Methods to override UN*X behaviour in ExtUtils::MakeMaker
370
371 =item ExtUtils::MM_Unix
372
373 Methods used by ExtUtils::MakeMaker
374
375 =item ExtUtils::MM_VMS
376
377 Methods to override UN*X behaviour in ExtUtils::MakeMaker
378
379 =item ExtUtils::MM_Win32
380
381 Methods to override UN*X behaviour in ExtUtils::MakeMaker
382
383 =item ExtUtils::MakeMaker
384
385 Create an extension Makefile
386
387 =item ExtUtils::Manifest
388
389 Utilities to write and check a MANIFEST file
390
391 =item ExtUtils::Mkbootstrap
392
393 Make a bootstrap file for use by DynaLoader
394
395 =item ExtUtils::Mksymlists
396
397 Write linker options files for dynamic extension
398
399 =item ExtUtils::Packlist
400
401 Manage .packlist files
402
403 =item ExtUtils::testlib
404
405 Add blib/* directories to @INC
406
407 =item Fatal
408
409 Replace functions with equivalents which succeed or die
410
411 =item Fcntl
412
413 Load the C Fcntl.h defines
414
415 =item File::Basename
416
417 Split a pathname into pieces
418
419 =item File::CheckTree
420
421 Run many filetest checks on a tree
422
423 =item File::Compare
424
425 Compare files or filehandles
426
427 =item File::Copy
428
429 Copy files or filehandles
430
431 =item File::DosGlob
432
433 DOS like globbing and then some
434
435 =item File::Find
436
437 Traverse a file tree
438
439 =item File::Path
440
441 Create or remove directory trees
442
443 =item File::Spec
444
445 Portably perform operations on file names
446
447 =item File::Spec::Functions
448
449 Portably perform operations on file names
450
451 =item File::Spec::Mac
452
453 File::Spec for MacOS
454
455 =item File::Spec::OS2
456
457 Methods for OS/2 file specs
458
459 =item File::Spec::Unix
460
461 Methods used by File::Spec
462
463 =item File::Spec::VMS
464
465 Methods for VMS file specs
466
467 =item File::Spec::Win32
468
469 Methods for Win32 file specs
470
471 =item File::Temp
472
473 Return name and handle of a temporary file safely
474
475 =item File::stat
476
477 By-name interface to Perl's built-in stat() functions
478
479 =item FileCache
480
481 Keep more files open than the system permits
482
483 =item FileHandle
484
485 Supply object methods for filehandles
486
487 =item FindBin
488
489 Locate directory of original perl script
490
491 =item Getopt::Long
492
493 Extended processing of command line options
494
495 =item Getopt::Std
496
497 Process single-character switches with switch clustering
498
499 =item I18N::Collate
500
501 Compare 8-bit scalar data according to the current locale
502
503 =item IO
504
505 Load various IO modules
506
507 =item IPC::Open2
508
509 Open a process for both reading and writing
510
511 =item IPC::Open3
512
513 Open a process for reading, writing, and error handling
514
515 =item Math::BigFloat
516
517 Arbitrary length float math package
518
519 =item Math::BigInt
520
521 Arbitrary size integer math package
522
523 =item Math::Complex
524
525 Complex numbers and associated mathematical functions
526
527 =item Math::Trig
528
529 Trigonometric functions
530
531 =item NDBM_File
532
533 Tied access to ndbm files
534
535 =item Net::Ping
536
537 Check a remote host for reachability
538
539 =item Net::hostent
540
541 By-name interface to Perl's built-in gethost*() functions
542
543 =item Net::netent
544
545 By-name interface to Perl's built-in getnet*() functions
546
547 =item Net::protoent
548
549 By-name interface to Perl's built-in getproto*() functions
550
551 =item Net::servent
552
553 By-name interface to Perl's built-in getserv*() functions
554
555 =item O
556
557 Generic interface to Perl Compiler backends
558
559 =item ODBM_File
560
561 Tied access to odbm files
562
563 =item Opcode
564
565 Disable named opcodes when compiling perl code
566
567 =item Pod::Checker
568
569 Check pod documents for syntax errors
570
571 =item Pod::Find
572
573 Find POD documents in directory trees
574
575 =item Pod::Html
576
577 Module to convert pod files to HTML
578
579 =item Pod::InputObjects
580
581 Objects representing POD input paragraphs, commands, etc.
582
583 =item Pod::LaTeX
584
585 Convert Pod data to formatted Latex
586
587 =item Pod::Man
588
589 Convert POD data to formatted *roff input
590
591 =item Pod::ParseUtils
592
593 Helpers for POD parsing and conversion
594
595 =item Pod::Parser
596
597 Base class for creating POD filters and translators
598
599 =item Pod::Plainer
600
601 Perl extension for converting Pod to old style Pod.
602
603 =item Pod::Select
604
605 Extract selected sections of POD from input
606
607 =item Pod::Text
608
609 Convert POD data to formatted ASCII text
610
611 =item Pod::Text::Color
612
613 Convert POD data to formatted color ASCII text
614
615 =item Pod::Text::Termcap
616
617 Convert POD data to ASCII text with format escapes
618
619 =item Pod::Usage
620
621 Print a usage message from embedded pod documentation
622
623 =item SDBM_File
624
625 Tied access to sdbm files
626
627 =item Safe
628
629 Compile and execute code in restricted compartments
630
631 =item Search::Dict
632
633 Search for key in dictionary file
634
635 =item SelectSaver
636
637 Save and restore selected file handle
638
639 =item SelfLoader
640
641 Load functions only on demand
642
643 =item Shell
644
645 Run shell commands transparently within perl
646
647 =item Socket
648
649 Load the C socket.h defines and structure manipulators 
650
651 =item Storable
652
653 Persistency for perl data structures
654
655 =item Symbol
656
657 Manipulate Perl symbols and their names
658
659 =item Term::ANSIColor
660
661 Color screen output using ANSI escape sequences
662
663 =item Term::Cap
664
665 Perl termcap interface
666
667 =item Term::Complete
668
669 Perl word completion module
670
671 =item Term::ReadLine
672
673 Perl interface to various C<readline> packages. If
674
675 =item Test
676
677 Provides a simple framework for writing test scripts
678
679 =item Test::Harness
680
681 Run perl standard test scripts with statistics
682
683 =item Text::Abbrev
684
685 Create an abbreviation table from a list
686
687 =item Text::ParseWords
688
689 Parse text into an array of tokens or array of arrays
690
691 =item Text::Soundex
692
693 Implementation of the Soundex Algorithm as Described by Knuth
694
695 =item Text::Wrap
696
697 Line wrapping to form simple paragraphs
698
699 =item Tie::Array
700
701 Base class for tied arrays
702
703 =item Tie::Handle
704
705 Base class definitions for tied handles
706
707 =item Tie::Hash
708
709 Base class definitions for tied hashes
710
711 =item Tie::RefHash
712
713 Use references as hash keys
714
715 =item Tie::Scalar
716
717 Base class definitions for tied scalars
718
719 =item Tie::SubstrHash
720
721 Fixed-table-size, fixed-key-length hashing
722
723 =item Time::Local
724
725 Efficiently compute time from local and GMT time
726
727 =item Time::gmtime
728
729 By-name interface to Perl's built-in gmtime() function
730
731 =item Time::localtime
732
733 By-name interface to Perl's built-in localtime() function
734
735 =item Time::tm
736
737 Internal object used by Time::gmtime and Time::localtime
738
739 =item UNIVERSAL
740
741 Base class for ALL classes (blessed references)
742
743 =item User::grent
744
745 By-name interface to Perl's built-in getgr*() functions
746
747 =item User::pwent
748
749 By-name interface to Perl's built-in getpw*() functions
750
751 =back
752
753 To find out I<all> modules installed on your system, including
754 those without documentation or outside the standard release,
755 just do this:
756
757     % find `perl -e 'print "@INC"'` -name '*.pm' -print
758
759 They should all have their own documentation installed and accessible
760 via your system man(1) command.  If you do not have a B<find>
761 program, you can use the Perl B<find2perl> program instead, which
762 generates Perl code as output you can run through perl.  If you
763 have a B<man> program but it doesn't find your modules, you'll have
764 to fix your manpath.  See L<perl> for details.  If you have no
765 system B<man> command, you might try the B<perldoc> program.
766
767 =head2 Extension Modules
768
769 Extension modules are written in C (or a mix of Perl and C).  They
770 are usually dynamically loaded into Perl if and when you need them,
771 but may also be be linked in statically.  Supported extension modules
772 include Socket, Fcntl, and POSIX.
773
774 Many popular C extension modules do not come bundled (at least, not
775 completely) due to their sizes, volatility, or simply lack of time
776 for adequate testing and configuration across the multitude of
777 platforms on which Perl was beta-tested.  You are encouraged to
778 look for them on CPAN (described below), or using web search engines
779 like Alta Vista or Deja News.
780
781 =head1 CPAN
782
783 CPAN stands for Comprehensive Perl Archive Network; it's a globally
784 replicated trove of Perl materials, including documentation, style
785 guides, tricks and traps, alternate ports to non-Unix systems and
786 occasional binary distributions for these.   Search engines for
787 CPAN can be found at http://cpan.perl.com/ and at
788 http://theory.uwinnipeg.ca/mod_perl/cpan-search.pl .
789
790 Most importantly, CPAN includes around a thousand unbundled modules,
791 some of which require a C compiler to build.  Major categories of
792 modules are:
793
794 =over 4
795
796 =item *
797 Language Extensions and Documentation Tools
798
799 =item *
800 Development Support
801
802 =item *
803 Operating System Interfaces
804
805 =item *
806 Networking, Device Control (modems) and InterProcess Communication
807
808 =item *
809 Data Types and Data Type Utilities
810
811 =item *
812 Database Interfaces
813
814 =item *
815 User Interfaces
816
817 =item *
818 Interfaces to / Emulations of Other Programming Languages
819
820 =item *
821 File Names, File Systems and File Locking (see also File Handles)
822
823 =item *
824 String Processing, Language Text Processing, Parsing, and Searching
825
826 =item *
827 Option, Argument, Parameter, and Configuration File Processing
828
829 =item *
830 Internationalization and Locale
831
832 =item *
833 Authentication, Security, and Encryption
834
835 =item *
836 World Wide Web, HTML, HTTP, CGI, MIME
837
838 =item *
839 Server and Daemon Utilities
840
841 =item *
842 Archiving and Compression
843
844 =item *
845 Images, Pixmap and Bitmap Manipulation, Drawing, and Graphing
846
847 =item *
848 Mail and Usenet News
849
850 =item *
851 Control Flow Utilities (callbacks and exceptions etc)
852
853 =item *
854 File Handle and Input/Output Stream Utilities
855
856 =item *
857 Miscellaneous Modules
858
859 =back
860
861 Registered CPAN sites as of this writing include the following.
862 You should try to choose one close to you:
863
864 =over 4
865
866 =item Africa
867
868     South Africa   ftp://ftp.is.co.za/programming/perl/CPAN/
869                    ftp://ftp.saix.net/pub/CPAN/
870                    ftp://ftp.sun.ac.za/CPAN/
871                    ftp://ftpza.co.za/pub/mirrors/cpan/
872
873
874 =item Asia
875
876     China          ftp://freesoft.cei.gov.cn/pub/languages/perl/CPAN/
877     Hong Kong      ftp://ftp.pacific.net.hk/pub/mirror/CPAN/
878     Indonesia      ftp://malone.piksi.itb.ac.id/pub/CPAN/
879     Israel         ftp://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/
880     Japan          ftp://ftp.dti.ad.jp/pub/lang/CPAN/
881                    ftp://ftp.jaist.ac.jp/pub/lang/perl/CPAN/
882                    ftp://ftp.lab.kdd.co.jp/lang/perl/CPAN/
883                    ftp://ftp.meisei-u.ac.jp/pub/CPAN/
884                    ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/
885                    ftp://mirror.nucba.ac.jp/mirror/Perl/
886     Saudi-Arabia   ftp://ftp.isu.net.sa/pub/CPAN/
887     Singapore      ftp://ftp.nus.edu.sg/pub/unix/perl/CPAN/
888     South Korea    ftp://ftp.bora.net/pub/CPAN/
889                    ftp://ftp.kornet.net/pub/CPAN/
890                    ftp://ftp.nuri.net/pub/CPAN/
891     Taiwan         ftp://coda.nctu.edu.tw/computer-languages/perl/CPAN/
892                    ftp://ftp.ee.ncku.edu.tw/pub3/perl/CPAN/
893                    ftp://ftp1.sinica.edu.tw/pub1/perl/CPAN/
894     Thailand       ftp://ftp.nectec.or.th/pub/mirrors/CPAN/
895
896
897 =item Australasia
898
899     Australia      ftp://cpan.topend.com.au/pub/CPAN/
900                    ftp://ftp.labyrinth.net.au/pub/perl-CPAN/
901                    ftp://ftp.sage-au.org.au/pub/compilers/perl/CPAN/
902                    ftp://mirror.aarnet.edu.au/pub/perl/CPAN/
903     New Zealand    ftp://ftp.auckland.ac.nz/pub/perl/CPAN/
904                    ftp://sunsite.net.nz/pub/languages/perl/CPAN/
905
906
907 =item Central America
908
909     Costa Rica     ftp://ftp.ucr.ac.cr/pub/Unix/CPAN/
910
911
912 =item Europe
913
914     Austria        ftp://ftp.tuwien.ac.at/pub/languages/perl/CPAN/
915     Belgium        ftp://ftp.kulnet.kuleuven.ac.be/pub/mirror/CPAN/
916     Bulgaria       ftp://ftp.ntrl.net/pub/mirrors/CPAN/
917     Croatia        ftp://ftp.linux.hr/pub/CPAN/
918     Czech Republic ftp://ftp.fi.muni.cz/pub/perl/
919                    ftp://sunsite.mff.cuni.cz/Languages/Perl/CPAN/
920     Denmark        ftp://sunsite.auc.dk/pub/languages/perl/CPAN/
921     Estonia        ftp://ftp.ut.ee/pub/languages/perl/CPAN/
922     Finland        ftp://ftp.funet.fi/pub/languages/perl/CPAN/
923     France         ftp://ftp.grolier.fr/pub/perl/CPAN/
924                    ftp://ftp.lip6.fr/pub/perl/CPAN/
925                    ftp://ftp.oleane.net/pub/mirrors/CPAN/
926                    ftp://ftp.pasteur.fr/pub/computing/CPAN/
927                    ftp://ftp.uvsq.fr/pub/perl/CPAN/
928     German         ftp://ftp.gigabell.net/pub/CPAN/
929     Germany        ftp://ftp.archive.de.uu.net/pub/CPAN/
930                    ftp://ftp.freenet.de/pub/ftp.cpan.org/pub/
931                    ftp://ftp.gmd.de/packages/CPAN/
932                    ftp://ftp.gwdg.de/pub/languages/perl/CPAN/
933
934 ftp://ftp.leo.org/pub/comp/general/programming/languages/script/perl/CPAN/
935                    ftp://ftp.mpi-sb.mpg.de/pub/perl/CPAN/
936                    ftp://ftp.rz.ruhr-uni-bochum.de/pub/CPAN/
937                    ftp://ftp.uni-erlangen.de/pub/source/CPAN/
938                    ftp://ftp.uni-hamburg.de/pub/soft/lang/perl/CPAN/
939     Germany        ftp://ftp.archive.de.uu.net/pub/CPAN/
940                    ftp://ftp.freenet.de/pub/ftp.cpan.org/pub/
941                    ftp://ftp.gmd.de/packages/CPAN/
942                    ftp://ftp.gwdg.de/pub/languages/perl/CPAN/
943
944 ftp://ftp.leo.org/pub/comp/general/programming/languages/script/perl/CPAN/
945                    ftp://ftp.mpi-sb.mpg.de/pub/perl/CPAN/
946                    ftp://ftp.rz.ruhr-uni-bochum.de/pub/CPAN/
947                    ftp://ftp.uni-erlangen.de/pub/source/CPAN/
948                    ftp://ftp.uni-hamburg.de/pub/soft/lang/perl/CPAN/
949     Greece         ftp://ftp.ntua.gr/pub/lang/perl/
950     Hungary        ftp://ftp.kfki.hu/pub/packages/perl/CPAN/
951     Iceland        ftp://ftp.gm.is/pub/CPAN/
952     Ireland        ftp://cpan.indigo.ie/pub/CPAN/
953                    ftp://sunsite.compapp.dcu.ie/pub/perl/
954     Italy          ftp://cis.uniRoma2.it/CPAN/
955                    ftp://ftp.flashnet.it/pub/CPAN/
956                    ftp://ftp.unina.it/pub/Other/CPAN/
957                    ftp://ftp.unipi.it/pub/mirror/perl/CPAN/
958     Netherlands    ftp://ftp.cs.uu.nl/mirror/CPAN/
959                    ftp://ftp.nluug.nl/pub/languages/perl/CPAN/
960     Norway         ftp://ftp.uit.no/pub/languages/perl/cpan/
961                    ftp://sunsite.uio.no/pub/languages/perl/CPAN/
962     Poland         ftp://ftp.man.torun.pl/pub/CPAN/
963                    ftp://ftp.pk.edu.pl/pub/lang/perl/CPAN/
964                    ftp://sunsite.icm.edu.pl/pub/CPAN/
965     Portugal       ftp://ftp.ci.uminho.pt/pub/mirrors/cpan/
966                    ftp://ftp.ist.utl.pt/pub/CPAN/
967                    ftp://ftp.ua.pt/pub/CPAN/
968     Romania        ftp://ftp.dnttm.ro/pub/CPAN/
969     Russia         ftp://ftp.chg.ru/pub/lang/perl/CPAN/
970                    ftp://ftp.sai.msu.su/pub/lang/perl/CPAN/
971     Slovakia       ftp://ftp.entry.sk/pub/languages/perl/CPAN/
972     Slovenia       ftp://ftp.arnes.si/software/perl/CPAN/
973     Spain          ftp://ftp.etse.urv.es/pub/perl/
974                    ftp://ftp.rediris.es/mirror/CPAN/
975     Sweden         ftp://ftp.sunet.se/pub/lang/perl/CPAN/
976     Switzerland    ftp://sunsite.cnlab-switch.ch/mirror/CPAN/
977     Turkey         ftp://sunsite.bilkent.edu.tr/pub/languages/CPAN/
978     United Kingdom ftp://ftp.demon.co.uk/pub/mirrors/perl/CPAN/
979                    ftp://ftp.flirble.org/pub/languages/perl/CPAN/
980
981 ftp://ftp.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN/
982                    ftp://ftp.plig.org/pub/CPAN/
983                    ftp://sunsite.doc.ic.ac.uk/packages/CPAN/
984
985
986 =item North America
987
988     Alberta        ftp://sunsite.ualberta.ca/pub/Mirror/CPAN/
989     California     ftp://cpan.nas.nasa.gov/pub/perl/CPAN/
990                    ftp://cpan.valueclick.com/CPAN/
991                    ftp://ftp.cdrom.com/pub/perl/CPAN/
992                    http://download.sourceforge.net/mirrors/CPAN/
993     Colorado       ftp://ftp.cs.colorado.edu/pub/perl/CPAN/
994     Florida        ftp://ftp.cise.ufl.edu/pub/perl/CPAN/
995     Georgia        ftp://ftp.twoguys.org/CPAN/
996     Illinois       ftp://uiarchive.uiuc.edu/pub/lang/perl/CPAN/
997     Indiana        ftp://csociety-ftp.ecn.purdue.edu/pub/CPAN/
998                    ftp://ftp.uwsg.indiana.edu/pub/perl/CPAN/
999     Kentucky       ftp://ftp.uky.edu/CPAN/
1000     Manitoba       ftp://theoryx5.uwinnipeg.ca/pub/CPAN/
1001     Massachusetts
1002 ftp://ftp.ccs.neu.edu/net/mirrors/ftp.funet.fi/pub/languages/perl/CPAN/
1003                    ftp://ftp.iguide.com/pub/mirrors/packages/perl/CPAN/
1004     Mexico         ftp://ftp.msg.com.mx/pub/CPAN/
1005     New York       ftp://ftp.deao.net/pub/CPAN/
1006                    ftp://ftp.rge.com/pub/languages/perl/
1007     North Carolina ftp://ftp.duke.edu/pub/perl/
1008     Nova Scotia    ftp://cpan.chebucto.ns.ca/pub/CPAN/
1009     Oklahoma       ftp://ftp.ou.edu/mirrors/CPAN/
1010     Ontario        ftp://ftp.crc.ca/pub/packages/lang/perl/CPAN/
1011     Oregon         ftp://ftp.orst.edu/pub/packages/CPAN/
1012     Pennsylvania   ftp://ftp.epix.net/pub/languages/perl/
1013     Tennessee      ftp://ftp.sunsite.utk.edu/pub/CPAN/
1014     Texas          ftp://ftp.sedl.org/pub/mirrors/CPAN/
1015                    ftp://jhcloos.com/pub/mirror/CPAN/
1016     Utah           ftp://mirror.xmission.com/CPAN/
1017     Virginia       ftp://ftp.perl.org/pub/perl/CPAN/
1018                    ftp://ruff.cs.jmu.edu/pub/CPAN/
1019     Washington     ftp://ftp-mirror.internap.com/pub/CPAN/
1020                    ftp://ftp.llarian.net/pub/CPAN/
1021                    ftp://ftp.spu.edu/pub/CPAN/
1022
1023
1024 =item South America
1025
1026     Brazil         ftp://cpan.if.usp.br/pub/mirror/CPAN/
1027                    ftp://ftp.matrix.com.br/pub/perl/
1028     Chile          ftp://sunsite.dcc.uchile.cl/pub/Lang/PERL/
1029
1030 =back
1031
1032 For an up-to-date listing of CPAN sites,
1033 see http://www.perl.com/perl/CPAN/SITES or ftp://www.perl.com/CPAN/SITES .
1034
1035 =head1 Modules: Creation, Use, and Abuse
1036
1037 (The following section is borrowed directly from Tim Bunce's modules
1038 file, available at your nearest CPAN site.)
1039
1040 Perl implements a class using a package, but the presence of a
1041 package doesn't imply the presence of a class.  A package is just a
1042 namespace.  A class is a package that provides subroutines that can be
1043 used as methods.  A method is just a subroutine that expects, as its
1044 first argument, either the name of a package (for "static" methods),
1045 or a reference to something (for "virtual" methods).
1046
1047 A module is a file that (by convention) provides a class of the same
1048 name (sans the .pm), plus an import method in that class that can be
1049 called to fetch exported symbols.  This module may implement some of
1050 its methods by loading dynamic C or C++ objects, but that should be
1051 totally transparent to the user of the module.  Likewise, the module
1052 might set up an AUTOLOAD function to slurp in subroutine definitions on
1053 demand, but this is also transparent.  Only the F<.pm> file is required to
1054 exist.  See L<perlsub>, L<perltoot>, and L<AutoLoader> for details about
1055 the AUTOLOAD mechanism.
1056
1057 =head2 Guidelines for Module Creation
1058
1059 =over 4
1060
1061 =item Do similar modules already exist in some form?
1062
1063 If so, please try to reuse the existing modules either in whole or
1064 by inheriting useful features into a new class.  If this is not
1065 practical try to get together with the module authors to work on
1066 extending or enhancing the functionality of the existing modules.
1067 A perfect example is the plethora of packages in perl4 for dealing
1068 with command line options.
1069
1070 If you are writing a module to expand an already existing set of
1071 modules, please coordinate with the author of the package.  It
1072 helps if you follow the same naming scheme and module interaction
1073 scheme as the original author.
1074
1075 =item Try to design the new module to be easy to extend and reuse.
1076
1077 Try to C<use warnings;> (or C<use warnings qw(...);>).
1078 Remember that you can add C<no warnings qw(...);> to individual blocks
1079 of code that need less warnings.
1080
1081 Use blessed references.  Use the two argument form of bless to bless
1082 into the class name given as the first parameter of the constructor,
1083 e.g.,:
1084
1085  sub new {
1086      my $class = shift;
1087      return bless {}, $class;
1088  }
1089
1090 or even this if you'd like it to be used as either a static
1091 or a virtual method.
1092
1093  sub new {
1094      my $self  = shift;
1095      my $class = ref($self) || $self;
1096      return bless {}, $class;
1097  }
1098
1099 Pass arrays as references so more parameters can be added later
1100 (it's also faster).  Convert functions into methods where
1101 appropriate.  Split large methods into smaller more flexible ones.
1102 Inherit methods from other modules if appropriate.
1103
1104 Avoid class name tests like: C<die "Invalid" unless ref $ref eq 'FOO'>.
1105 Generally you can delete the C<eq 'FOO'> part with no harm at all.
1106 Let the objects look after themselves! Generally, avoid hard-wired
1107 class names as far as possible.
1108
1109 Avoid C<< $r->Class::func() >> where using C<@ISA=qw(... Class ...)> and
1110 C<< $r->func() >> would work (see L<perlbot> for more details).
1111
1112 Use autosplit so little used or newly added functions won't be a
1113 burden to programs that don't use them. Add test functions to
1114 the module after __END__ either using AutoSplit or by saying:
1115
1116  eval join('',<main::DATA>) || die $@ unless caller();
1117
1118 Does your module pass the 'empty subclass' test? If you say
1119 C<@SUBCLASS::ISA = qw(YOURCLASS);> your applications should be able
1120 to use SUBCLASS in exactly the same way as YOURCLASS.  For example,
1121 does your application still work if you change:  C<$obj = new YOURCLASS;>
1122 into: C<$obj = new SUBCLASS;> ?
1123
1124 Avoid keeping any state information in your packages. It makes it
1125 difficult for multiple other packages to use yours. Keep state
1126 information in objects.
1127
1128 Always use B<-w>.
1129
1130 Try to C<use strict;> (or C<use strict qw(...);>).
1131 Remember that you can add C<no strict qw(...);> to individual blocks
1132 of code that need less strictness.
1133
1134 Always use B<-w>.
1135
1136 Follow the guidelines in the perlstyle(1) manual.
1137
1138 Always use B<-w>.
1139
1140 =item Some simple style guidelines
1141
1142 The perlstyle manual supplied with Perl has many helpful points.
1143
1144 Coding style is a matter of personal taste. Many people evolve their
1145 style over several years as they learn what helps them write and
1146 maintain good code.  Here's one set of assorted suggestions that
1147 seem to be widely used by experienced developers:
1148
1149 Use underscores to separate words.  It is generally easier to read
1150 $var_names_like_this than $VarNamesLikeThis, especially for
1151 non-native speakers of English. It's also a simple rule that works
1152 consistently with VAR_NAMES_LIKE_THIS.
1153
1154 Package/Module names are an exception to this rule. Perl informally
1155 reserves lowercase module names for 'pragma' modules like integer
1156 and strict. Other modules normally begin with a capital letter and
1157 use mixed case with no underscores (need to be short and portable).
1158
1159 You may find it helpful to use letter case to indicate the scope
1160 or nature of a variable. For example:
1161
1162  $ALL_CAPS_HERE   constants only (beware clashes with Perl vars)
1163  $Some_Caps_Here  package-wide global/static
1164  $no_caps_here    function scope my() or local() variables
1165
1166 Function and method names seem to work best as all lowercase.
1167 e.g., C<< $obj->as_string() >>.
1168
1169 You can use a leading underscore to indicate that a variable or
1170 function should not be used outside the package that defined it.
1171
1172 =item Select what to export.
1173
1174 Do NOT export method names!
1175
1176 Do NOT export anything else by default without a good reason!
1177
1178 Exports pollute the namespace of the module user.  If you must
1179 export try to use @EXPORT_OK in preference to @EXPORT and avoid
1180 short or common names to reduce the risk of name clashes.
1181
1182 Generally anything not exported is still accessible from outside the
1183 module using the ModuleName::item_name (or C<< $blessed_ref->method >>)
1184 syntax.  By convention you can use a leading underscore on names to
1185 indicate informally that they are 'internal' and not for public use.
1186
1187 (It is actually possible to get private functions by saying:
1188 C<my $subref = sub { ... };  &$subref;>.  But there's no way to call that
1189 directly as a method, because a method must have a name in the symbol
1190 table.)
1191
1192 As a general rule, if the module is trying to be object oriented
1193 then export nothing. If it's just a collection of functions then
1194 @EXPORT_OK anything but use @EXPORT with caution.
1195
1196 =item Select a name for the module.
1197
1198 This name should be as descriptive, accurate, and complete as
1199 possible.  Avoid any risk of ambiguity. Always try to use two or
1200 more whole words.  Generally the name should reflect what is special
1201 about what the module does rather than how it does it.  Please use
1202 nested module names to group informally or categorize a module.
1203 There should be a very good reason for a module not to have a nested name.
1204 Module names should begin with a capital letter.
1205
1206 Having 57 modules all called Sort will not make life easy for anyone
1207 (though having 23 called Sort::Quick is only marginally better :-).
1208 Imagine someone trying to install your module alongside many others.
1209 If in any doubt ask for suggestions in comp.lang.perl.misc.
1210
1211 If you are developing a suite of related modules/classes it's good
1212 practice to use nested classes with a common prefix as this will
1213 avoid namespace clashes. For example: Xyz::Control, Xyz::View,
1214 Xyz::Model etc. Use the modules in this list as a naming guide.
1215
1216 If adding a new module to a set, follow the original author's
1217 standards for naming modules and the interface to methods in
1218 those modules.
1219
1220 To be portable each component of a module name should be limited to
1221 11 characters. If it might be used on MS-DOS then try to ensure each is
1222 unique in the first 8 characters. Nested modules make this easier.
1223
1224 =item Have you got it right?
1225
1226 How do you know that you've made the right decisions? Have you
1227 picked an interface design that will cause problems later? Have
1228 you picked the most appropriate name? Do you have any questions?
1229
1230 The best way to know for sure, and pick up many helpful suggestions,
1231 is to ask someone who knows. Comp.lang.perl.misc is read by just about
1232 all the people who develop modules and it's the best place to ask.
1233
1234 All you need to do is post a short summary of the module, its
1235 purpose and interfaces. A few lines on each of the main methods is
1236 probably enough. (If you post the whole module it might be ignored
1237 by busy people - generally the very people you want to read it!)
1238
1239 Don't worry about posting if you can't say when the module will be
1240 ready - just say so in the message. It might be worth inviting
1241 others to help you, they may be able to complete it for you!
1242
1243 =item README and other Additional Files.
1244
1245 It's well known that software developers usually fully document the
1246 software they write. If, however, the world is in urgent need of
1247 your software and there is not enough time to write the full
1248 documentation please at least provide a README file containing:
1249
1250 =over 10
1251
1252 =item *
1253 A description of the module/package/extension etc.
1254
1255 =item *
1256 A copyright notice - see below.
1257
1258 =item *
1259 Prerequisites - what else you may need to have.
1260
1261 =item *
1262 How to build it - possible changes to Makefile.PL etc.
1263
1264 =item *
1265 How to install it.
1266
1267 =item *
1268 Recent changes in this release, especially incompatibilities
1269
1270 =item *
1271 Changes / enhancements you plan to make in the future.
1272
1273 =back
1274
1275 If the README file seems to be getting too large you may wish to
1276 split out some of the sections into separate files: INSTALL,
1277 Copying, ToDo etc.
1278
1279 =over 4
1280
1281 =item Adding a Copyright Notice.
1282
1283 How you choose to license your work is a personal decision.
1284 The general mechanism is to assert your Copyright and then make
1285 a declaration of how others may copy/use/modify your work.
1286
1287 Perl, for example, is supplied with two types of licence: The GNU
1288 GPL and The Artistic Licence (see the files README, Copying, and
1289 Artistic).  Larry has good reasons for NOT just using the GNU GPL.
1290
1291 My personal recommendation, out of respect for Larry, Perl, and the
1292 Perl community at large is to state something simply like:
1293
1294  Copyright (c) 1995 Your Name. All rights reserved.
1295  This program is free software; you can redistribute it and/or
1296  modify it under the same terms as Perl itself.
1297
1298 This statement should at least appear in the README file. You may
1299 also wish to include it in a Copying file and your source files.
1300 Remember to include the other words in addition to the Copyright.
1301
1302 =item Give the module a version/issue/release number.
1303
1304 To be fully compatible with the Exporter and MakeMaker modules you
1305 should store your module's version number in a non-my package
1306 variable called $VERSION.  This should be a floating point
1307 number with at least two digits after the decimal (i.e., hundredths,
1308 e.g, C<$VERSION = "0.01">).  Don't use a "1.3.2" style version.
1309 See L<Exporter> for details.
1310
1311 It may be handy to add a function or method to retrieve the number.
1312 Use the number in announcements and archive file names when
1313 releasing the module (ModuleName-1.02.tar.Z).
1314 See perldoc ExtUtils::MakeMaker.pm for details.
1315
1316 =item How to release and distribute a module.
1317
1318 It's good idea to post an announcement of the availability of your
1319 module (or the module itself if small) to the comp.lang.perl.announce
1320 Usenet newsgroup.  This will at least ensure very wide once-off
1321 distribution.
1322
1323 If possible, register the module with CPAN.  You should
1324 include details of its location in your announcement.
1325
1326 Some notes about ftp archives: Please use a long descriptive file
1327 name that includes the version number. Most incoming directories
1328 will not be readable/listable, i.e., you won't be able to see your
1329 file after uploading it. Remember to send your email notification
1330 message as soon as possible after uploading else your file may get
1331 deleted automatically. Allow time for the file to be processed
1332 and/or check the file has been processed before announcing its
1333 location.
1334
1335 FTP Archives for Perl Modules:
1336
1337 Follow the instructions and links on:
1338
1339    http://www.perl.com/CPAN/modules/00modlist.long.html
1340    http://www.perl.com/CPAN/modules/04pause.html
1341
1342 or upload to one of these sites:
1343
1344    https://pause.kbx.de/pause/
1345    http://pause.perl.org/pause/
1346
1347 and notify <modules@perl.org>.
1348
1349 By using the WWW interface you can ask the Upload Server to mirror
1350 your modules from your ftp or WWW site into your own directory on
1351 CPAN!
1352
1353 Please remember to send me an updated entry for the Module list!
1354
1355 =item Take care when changing a released module.
1356
1357 Always strive to remain compatible with previous released versions.
1358 Otherwise try to add a mechanism to revert to the
1359 old behavior if people rely on it.  Document incompatible changes.
1360
1361 =back
1362
1363 =back
1364
1365 =head2 Guidelines for Converting Perl 4 Library Scripts into Modules
1366
1367 =over 4
1368
1369 =item There is no requirement to convert anything.
1370
1371 If it ain't broke, don't fix it! Perl 4 library scripts should
1372 continue to work with no problems. You may need to make some minor
1373 changes (like escaping non-array @'s in double quoted strings) but
1374 there is no need to convert a .pl file into a Module for just that.
1375
1376 =item Consider the implications.
1377
1378 All Perl applications that make use of the script will need to
1379 be changed (slightly) if the script is converted into a module.  Is
1380 it worth it unless you plan to make other changes at the same time?
1381
1382 =item Make the most of the opportunity.
1383
1384 If you are going to convert the script to a module you can use the
1385 opportunity to redesign the interface.  The guidelines for module
1386 creation above include many of the issues you should consider.
1387
1388 =item The pl2pm utility will get you started.
1389
1390 This utility will read *.pl files (given as parameters) and write
1391 corresponding *.pm files. The pl2pm utilities does the following:
1392
1393 =over 10
1394
1395 =item *
1396 Adds the standard Module prologue lines
1397
1398 =item *
1399 Converts package specifiers from ' to ::
1400
1401 =item *
1402 Converts die(...) to croak(...)
1403
1404 =item *
1405 Several other minor changes
1406
1407 =back
1408
1409 Being a mechanical process pl2pm is not bullet proof. The converted
1410 code will need careful checking, especially any package statements.
1411 Don't delete the original .pl file till the new .pm one works!
1412
1413 =back
1414
1415 =head2 Guidelines for Reusing Application Code
1416
1417 =over 4
1418
1419 =item Complete applications rarely belong in the Perl Module Library.
1420
1421 =item Many applications contain some Perl code that could be reused.
1422
1423 Help save the world! Share your code in a form that makes it easy
1424 to reuse.
1425
1426 =item Break-out the reusable code into one or more separate module files.
1427
1428 =item Take the opportunity to reconsider and redesign the interfaces.
1429
1430 =item In some cases the 'application' can then be reduced to a small
1431
1432 fragment of code built on top of the reusable modules. In these cases
1433 the application could invoked as:
1434
1435      % perl -e 'use Module::Name; method(@ARGV)' ...
1436 or
1437      % perl -mModule::Name ...    (in perl5.002 or higher)
1438
1439 =back
1440
1441 =head1 NOTE
1442
1443 Perl does not enforce private and public parts of its modules as you may
1444 have been used to in other languages like C++, Ada, or Modula-17.  Perl
1445 doesn't have an infatuation with enforced privacy.  It would prefer
1446 that you stayed out of its living room because you weren't invited, not
1447 because it has a shotgun.
1448
1449 The module and its user have a contract, part of which is common law,
1450 and part of which is "written".  Part of the common law contract is
1451 that a module doesn't pollute any namespace it wasn't asked to.  The
1452 written contract for the module (A.K.A. documentation) may make other
1453 provisions.  But then you know when you C<use RedefineTheWorld> that
1454 you're redefining the world and willing to take the consequences.