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