source: trunk/third/perl/pod/perlmodlib.pod @ 17035

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