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