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