Update todo, removing things done and adding new things.
[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
556e28cf 74Transparent BigNumber/BigRational support for Perl
fa1c7b03 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
556e28cf 548Arbitrarily big rationals
fa1c7b03 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
1577cd80 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/
556e28cf 1050 ftp://ftp.sun.ac.za/CPAN/CPAN/
4e860d0a 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/
1064 http://cpan.shellhung.org/
1065 ftp://ftp.shellhung.org/pub/CPAN
1066
1067=item *
1068
37a78d01 1069India
4e860d0a 1070
37a78d01 1071 http://cpan.in.freeos.com
1072 ftp://cpan.in.freeos.com/pub/CPAN/
4e860d0a 1073
1074=item *
1075
1076Indonesia
1077
37a78d01 1078 http://cpan.itb.web.id/
4e860d0a 1079 ftp://mirrors.piksi.itb.ac.id/CPAN/
1080 http://CPAN.mweb.co.id/
1081 ftp://ftp.mweb.co.id/pub/languages/perl/CPAN/
1082
1083=item *
1084
1085Israel
1086
1087 http://www.iglu.org.il:/pub/CPAN/
1088 ftp://ftp.iglu.org.il/pub/CPAN/
37a78d01 1089 http://cpan.lerner.co.il/
4e860d0a 1090 http://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/
1091 ftp://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/
1092
1093=item *
1094
1095Japan
1096
37a78d01 1097 ftp://ftp.u-aizu.ac.jp/pub/CPAN
4e860d0a 1098 ftp://ftp.kddlabs.co.jp/CPAN/
1099 http://mirror.nucba.ac.jp/mirror/Perl/
1100 ftp://mirror.nucba.ac.jp/mirror/Perl/
1101 ftp://ftp.meisei-u.ac.jp/pub/CPAN/
556e28cf 1102 ftp://ftp.ayamura.org/pub/CPAN/
4e860d0a 1103 ftp://ftp.jaist.ac.jp/pub/lang/perl/CPAN/
1104 ftp://ftp.dti.ad.jp/pub/lang/CPAN/
1105 ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/
1106
1107=item *
1108
37a78d01 1109Korea
1110
1111 http://mirror.Mazic.org/pub/CPAN
1112 ftp://mirror.Mazic.org/pub/CPAN
1113
1114=item *
1115
1116Philippines
1117
1118 http://www.adzu.edu.ph/CPAN
1119
1120=item *
1121
1122Russian Federation
1123
1124 http://cpan.tomsk.ru
1125 ftp://cpan.tomsk.ru/pub/CPAN
1126
1127=item *
1128
4e860d0a 1129Saudi Arabia
1130
1131 ftp://ftp.isu.net.sa/pub/CPAN/
1132
1133=item *
1134
1135Singapore
1136
1137 http://cpan.hjc.edu.sg
4e860d0a 1138
1139=item *
1140
1141South Korea
1142
1143 http://CPAN.bora.net/
1144 ftp://ftp.bora.net/pub/CPAN/
37a78d01 1145 http://ftp.kornet.net/pub/CPAN/
4e860d0a 1146 ftp://ftp.kornet.net/pub/CPAN/
1147 ftp://ftp.nuri.net/pub/CPAN/
556e28cf 1148 http://ftp.xgate.co.kr/cpan/
1149 ftp://ftp.xgate.co.kr/pub/mirror/CPAN
4e860d0a 1150
1151=item *
1152
1153Taiwan
1154
4e860d0a 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
4e860d0a 1164 ftp://ftp.cs.riubon.ac.th/pub/mirrors/CPAN/
1165
1166=back
1167
1168=head2 Central America
1169
1170=over 4
1171
1172=item *
1173
1174Costa Rica
1175
1176 ftp://ftp.linux.co.cr/mirrors/CPAN/
1177 http://ftp.ucr.ac.cr/Unix/CPAN/
1178 ftp://ftp.ucr.ac.cr/pub/Unix/CPAN/
1179
1180=back
1181
1182=head2 Europe
1183
1184=over 4
1185
1186=item *
1187
1188Austria
1189
37a78d01 1190 ftp://ftp.tuwien.ac.at/pub/CPAN/
4e860d0a 1191
1192=item *
1193
1194Belgium
1195
37a78d01 1196 http://ftp.easynet.be/pub/CPAN/
1197 ftp://ftp.easynet.be/pub/CPAN/
1198 http://cpan.skynet.be
1199 ftp://ftp.skynet.be/pub/CPAN
4e860d0a 1200 ftp://ftp.kulnet.kuleuven.ac.be/pub/mirror/CPAN/
1201
1202=item *
1203
1204Bulgaria
1205
556e28cf 1206 http://cpan.lirex.net/
1207 ftp://ftp.lirex.net/pub/mirrors/CPAN
4e860d0a 1208
1209=item *
1210
1211Croatia
1212
1213 ftp://ftp.linux.hr/pub/CPAN/
1214
1215=item *
1216
1217Czech Republic
1218
37a78d01 1219 http://ftp.fi.muni.cz/pub/CPAN/
1220 ftp://ftp.fi.muni.cz/pub/CPAN/
4e860d0a 1221 ftp://sunsite.mff.cuni.cz/MIRRORS/ftp.funet.fi/pub/languages/perl/CPAN/
1222
1223=item *
1224
1225Denmark
1226
37a78d01 1227 http://mirrors.sunsite.dk/cpan/
1228 ftp://sunsite.dk/mirrors/cpan/
4e860d0a 1229 http://www.cpan.dk/CPAN/
1230 ftp://www.cpan.dk/ftp.cpan.org/CPAN/
1231
1232=item *
1233
4e860d0a 1234Estonia
1235
1236 ftp://ftp.ut.ee/pub/languages/perl/CPAN/
1237
1238=item *
1239
1240Finland
1241
1242 ftp://ftp.funet.fi/pub/languages/perl/CPAN/
37a78d01 1243 http://cpan.kpnqwest.fi/
4e860d0a 1244
1245=item *
1246
1247France
1248
37a78d01 1249 http://cpan.mirrors.easynet.fr/
1250 ftp://cpan.mirrors.easynet.fr/pub/ftp.cpan.org/
4e860d0a 1251 ftp://ftp.club-internet.fr/pub/perl/CPAN/
37a78d01 1252 http://fr.cpan.org/
4e860d0a 1253 ftp://ftp.lip6.fr/pub/perl/CPAN/
1254 ftp://ftp.oleane.net/pub/mirrors/CPAN/
1255 ftp://ftp.pasteur.fr/pub/computing/CPAN/
37a78d01 1256 http://cpan.cict.fr/
4e860d0a 1257 ftp://cpan.cict.fr/pub/CPAN/
1258 ftp://ftp.uvsq.fr/pub/perl/CPAN/
1259
1260=item *
1261
1262Germany
1263
1264 ftp://ftp.rz.ruhr-uni-bochum.de/pub/CPAN/
1265 ftp://ftp.freenet.de/pub/ftp.cpan.org/pub/CPAN/
1266 ftp://ftp.uni-erlangen.de/pub/source/CPAN/
1267 ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/CPAN
1268 ftp://ftp.gigabell.net/pub/CPAN/
556e28cf 1269 http://pandemonium.tiscali.de/pub/CPAN/
1270 ftp://pandemonium.tiscali.de/pub/CPAN/
4e860d0a 1271 http://ftp.gwdg.de/pub/languages/perl/CPAN/
1272 ftp://ftp.gwdg.de/pub/languages/perl/CPAN/
1273 ftp://ftp.uni-hamburg.de/pub/soft/lang/perl/CPAN/
37a78d01 1274 ftp://ftp.leo.org/pub/CPAN/
1275 http://cpan.noris.de/
1276 ftp://cpan.noris.de/pub/CPAN/
4e860d0a 1277 ftp://ftp.mpi-sb.mpg.de/pub/perl/CPAN/
1278 ftp://ftp.gmd.de/mirrors/CPAN/
1279
1280=item *
1281
1282Greece
1283
556e28cf 1284 ftp://ftp.acn.gr/pub/lang/perl/CPAN
4e860d0a 1285 ftp://ftp.forthnet.gr/pub/languages/perl/CPAN
1286 ftp://ftp.ntua.gr/pub/lang/perl/
1287
1288=item *
1289
1290Hungary
1291
1292 http://cpan.artifact.hu/
1293 ftp://cpan.artifact.hu/CPAN/
556e28cf 1294 http://ftp.kfki.hu/packages/perl/CPAN/
1295 ftp://ftp.kfki.hu/pub/packages/perl/CPAN/
4e860d0a 1296
1297=item *
1298
1299Iceland
1300
37a78d01 1301 http://ftp.rhnet.is/pub/CPAN/
1302 ftp://ftp.rhnet.is/pub/CPAN/
4e860d0a 1303
1304=item *
1305
1306Ireland
1307
1308 http://cpan.indigo.ie/
1309 ftp://cpan.indigo.ie/pub/CPAN/
1310 http://sunsite.compapp.dcu.ie/pub/perl/
1311 ftp://sunsite.compapp.dcu.ie/pub/perl/
1312
1313=item *
1314
1315Italy
1316
1317 http://cpan.nettuno.it/
1318 http://gusp.dyndns.org/CPAN/
1319 ftp://gusp.dyndns.org/pub/CPAN
1320 http://softcity.iol.it/cpan
1321 ftp://softcity.iol.it/pub/cpan
556e28cf 1322 ftp://ftp.unina.it/pub/Other/CPAN/CPAN/
4e860d0a 1323 ftp://ftp.unipi.it/pub/mirror/perl/CPAN/
1324 ftp://cis.uniRoma2.it/CPAN/
1325 ftp://ftp.edisontel.it/pub/CPAN_Mirror/
1326 ftp://ftp.flashnet.it/pub/CPAN/
1327
1328=item *
1329
1330Latvia
1331
1332 http://kvin.lv/pub/CPAN/
1333
1334=item *
1335
37a78d01 1336Lithuania
1337
1338 ftp://ftp.unix.lt/pub/CPAN/
1339
1340=item *
1341
4e860d0a 1342Netherlands
1343
1344 ftp://download.xs4all.nl/pub/mirror/CPAN/
1345 ftp://ftp.nl.uu.net/pub/CPAN/
1346 ftp://ftp.nluug.nl/pub/languages/perl/CPAN/
1347 ftp://ftp.cpan.nl/pub/CPAN/
1348 http://www.cs.uu.nl/mirror/CPAN/
1349 ftp://ftp.cs.uu.nl/mirror/CPAN/
1350
1351=item *
1352
1353Norway
1354
37a78d01 1355 ftp://ftp.uninett.no/pub/languages/perl/CPAN
4e860d0a 1356 ftp://ftp.uit.no/pub/languages/perl/cpan/
1357
1358=item *
1359
1360Poland
1361
1362 ftp://ftp.pk.edu.pl/pub/lang/perl/CPAN/
1363 ftp://ftp.mega.net.pl/pub/mirrors/ftp.perl.com/
1364 ftp://ftp.man.torun.pl/pub/doc/CPAN/
1365 ftp://sunsite.icm.edu.pl/pub/CPAN/
1366
1367=item *
1368
1369Portugal
1370
1371 ftp://ftp.ua.pt/pub/CPAN/
1372 ftp://perl.di.uminho.pt/pub/CPAN/
556e28cf 1373 http://cpan.dei.uc.pt/
1374 ftp://ftp.dei.uc.pt/pub/CPAN
4e860d0a 1375 ftp://ftp.ist.utl.pt/pub/CPAN/
37a78d01 1376 http://cpan.ip.pt/
1377 ftp://cpan.ip.pt/pub/cpan/
4e860d0a 1378 ftp://ftp.netc.pt/pub/CPAN/
37a78d01 1379 ftp://ftp.up.pt/pub/CPAN
4e860d0a 1380
1381=item *
1382
1383Romania
1384
4e860d0a 1385 ftp://ftp.kappa.ro/pub/mirrors/ftp.perl.org/pub/CPAN/
1386 ftp://ftp.dntis.ro/pub/cpan/
4e860d0a 1387 ftp://ftp.dnttm.ro/pub/CPAN/
37a78d01 1388 ftp://ftp.lasting.ro/pub/CPAN
4e860d0a 1389 ftp://ftp.timisoara.roedu.net/mirrors/CPAN/
1390
1391=item *
1392
1393Russia
1394
1395 ftp://ftp.chg.ru/pub/lang/perl/CPAN/
1396 http://cpan.rinet.ru/
1397 ftp://cpan.rinet.ru/pub/mirror/CPAN/
1398 ftp://ftp.aha.ru/pub/CPAN/
37a78d01 1399 http://cpan.sai.msu.ru/
4e860d0a 1400 ftp://ftp.sai.msu.su/pub/lang/perl/CPAN/
1401
1402=item *
1403
1404Slovakia
1405
556e28cf 1406 http://ftp.cvt.stuba.sk/pub/CPAN/
1407 ftp://ftp.cvt.stuba.sk/pub/CPAN/
4e860d0a 1408
1409=item *
1410
1411Slovenia
1412
1413 ftp://ftp.arnes.si/software/perl/CPAN/
1414
1415=item *
1416
1417Spain
1418
556e28cf 1419 http://cpan.imasd.elmundo.es/
4e860d0a 1420 ftp://ftp.rediris.es/mirror/CPAN/
1421 ftp://ftp.etse.urv.es/pub/perl/
1422
1423=item *
1424
1425Sweden
1426
1427 http://ftp.du.se/CPAN/
1428 ftp://ftp.du.se/pub/CPAN/
37a78d01 1429 ftp://mirror.dataphone.se/pub/CPAN
4e860d0a 1430 ftp://ftp.sunet.se/pub/lang/perl/CPAN/
1431
1432=item *
1433
1434Switzerland
1435
1436 ftp://ftp.danyk.ch/CPAN/
1437 ftp://sunsite.cnlab-switch.ch/mirror/CPAN/
1438
1439=item *
1440
1441Turkey
1442
1443 ftp://sunsite.bilkent.edu.tr/pub/languages/CPAN/
1444
37a78d01 1445=item *
1446
1447Ukraine
1448
1449 http://cpan.org.ua/
1450 ftp://cpan.org.ua/
1451 ftp://ftp.perl.org.ua/pub/CPAN/
1452
556e28cf 1453=item *
1454
1455United Kingdom
1456
1457 http://www.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN
1458 ftp://ftp.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN/
1459 http://cpan.teleglobe.net/
1460 ftp://cpan.teleglobe.net/pub/CPAN
1461 http://cpan.crazygreek.co.uk
1462 ftp://ftp.demon.co.uk/pub/CPAN/
1463 ftp://ftp.flirble.org/pub/languages/perl/CPAN/
1464 ftp://ftp.plig.org/pub/CPAN/
1465 http://mirror.uklinux.net/CPAN/
1466 ftp://mirror.uklinux.net/pub/CPAN/
1467 http://cpan.mirrors.clockerz.net/
1468 ftp://ftp.clockerz.net/pub/CPAN/
1469 ftp://usit.shef.ac.uk/pub/packages/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/
37a78d01 1514
1515=back
4e860d0a 1516
1517=item *
1518
1519Mexico
1520
37a78d01 1521 http://cpan.azc.uam.mx
1522 ftp://cpan.azc.uam.mx/mirrors/CPAN
1523 http://cpan.unam.mx/
1524 ftp://cpan.unam.mx/pub/CPAN
4e860d0a 1525 http://www.msg.com.mx/CPAN/
1526 ftp://ftp.msg.com.mx/pub/CPAN/
1527
4e860d0a 1528=item *
1529
1530United States
1531
1532=over 8
1533
1534=item *
1535
1536Alabama
1537
1538 http://mirror.hiwaay.net/CPAN/
1539 ftp://mirror.hiwaay.net/CPAN/
1540
1541=item *
1542
1543California
1544
1545 http://www.cpan.org/
37a78d01 1546 ftp://cpan.valueclick.com/pub/CPAN/
1547 http://mirrors.gossamer-threads.com/CPAN
4e860d0a 1548 ftp://cpan.nas.nasa.gov/pub/perl/CPAN/
37a78d01 1549 http://mirrors.kernel.org/cpan/
1550 ftp://mirrors.kernel.org/pub/CPAN
1551 http://cpan.digisle.net/
1552 ftp://cpan.digisle.net/pub/CPAN
4e860d0a 1553 http://www.perl.com/CPAN/
1554 http://download.sourceforge.net/mirrors/CPAN/
1555
1556=item *
1557
1558Colorado
1559
1560 ftp://ftp.cs.colorado.edu/pub/perl/CPAN/
1561
1562=item *
1563
556e28cf 1564Delaware
1565
1566 http://ftp.lug.udel.edu/pub/CPAN
1567 ftp://ftp.lug.udel.edu/pub/CPAN
1568
1569=item *
1570
37a78d01 1571District of Columbia
4e860d0a 1572
556e28cf 1573 ftp://ftp.dc.aleron.net/pub/CPAN/
4e860d0a 1574
1575=item *
1576
37a78d01 1577Florida
4e860d0a 1578
37a78d01 1579 ftp://ftp.cise.ufl.edu/pub/mirrors/CPAN/
1580 http://mirror.csit.fsu.edu/pub/CPAN/
1581 ftp://mirror.csit.fsu.edu/pub/CPAN/
4e860d0a 1582
1583=item *
1584
1585Illinois
1586
37a78d01 1587 http://uiarchive.uiuc.edu/mirrors/ftp/cpan.cse.msu.edu/
1588 ftp://uiarchive.uiuc.edu/mirrors/ftp/cpan.cse.msu.edu/
4e860d0a 1589
1590=item *
1591
1592Indiana
1593
556e28cf 1594 ftp://ftp.uwsg.iu.edu/pub/perl/CPAN/
1595 http://cpan.netnitco.net/
1596 ftp://cpan.netnitco.net/pub/mirrors/CPAN/
37a78d01 1597 http://archive.progeny.com/CPAN/
1598 ftp://archive.progeny.com/CPAN/
4e860d0a 1599 ftp://cpan.in-span.net/
1600 http://csociety-ftp.ecn.purdue.edu/pub/CPAN
1601 ftp://csociety-ftp.ecn.purdue.edu/pub/CPAN
1602
1603=item *
1604
1605Kentucky
1606
1607 http://cpan.uky.edu/
1608 ftp://cpan.uky.edu/pub/CPAN/
1609
1610=item *
1611
1612Massachusetts
1613
1614 ftp://ftp.ccs.neu.edu/net/mirrors/ftp.funet.fi/pub/languages/perl/CPAN/
37a78d01 1615 http://cpan.mirrors.netnumina.com/
1616 ftp://mirrors.netnumina.com/cpan/
4e860d0a 1617
1618=item *
1619
37a78d01 1620Michigan
1621
1622 ftp://cpan.cse.msu.edu/
1623
1624=item *
1625
4e860d0a 1626New Jersey
1627
1628 ftp://ftp.cpanel.net/pub/CPAN/
556e28cf 1629 http://cpan.teleglobe.net/
1630 ftp://cpan.teleglobe.net/pub/CPAN
4e860d0a 1631
1632=item *
1633
1634New York
1635
556e28cf 1636 ftp://ftp.exobit.org/pub/perl/CPAN
1637 http://cpan.belfry.net/
1638 http://cpan.thepirtgroup.com/
1639 ftp://cpan.thepirtgroup.com/
37a78d01 1640 ftp://ftp.stealth.net/pub/CPAN/
4e860d0a 1641 http://www.rge.com/pub/languages/perl/
1642 ftp://ftp.rge.com/pub/languages/perl/
1643 ftp://mirrors.cloud9.net/pub/mirrors/CPAN/
1644
1645=item *
1646
1647North Carolina
1648
1649 ftp://ftp.duke.edu/pub/perl/
1650
1651=item *
1652
1653Ohio
1654
1655 ftp://ftp.loaded.net/pub/CPAN/
1656
1657=item *
1658
1659Oklahoma
1660
1661 ftp://ftp.ou.edu/mirrors/CPAN/
1662
1663=item *
1664
1665Oregon
1666
37a78d01 1667 ftp://ftp.orst.edu/pub/CPAN
4e860d0a 1668
1669=item *
1670
1671Pennsylvania
1672
1673 http://ftp.epix.net/CPAN/
1674 ftp://ftp.epix.net/pub/languages/perl/
37a78d01 1675 http://mirrors.phenominet.com/pub/CPAN/
1676 ftp://mirrors.phenominet.com/pub/CPAN/
556e28cf 1677 http://cpan.pair.com/
1678 ftp://cpan.pair.com/pub/CPAN/
4e860d0a 1679 ftp://carroll.cac.psu.edu/pub/CPAN/
1680
1681=item *
1682
1683Tennessee
1684
1685 ftp://ftp.sunsite.utk.edu/pub/CPAN/
1686
1687=item *
1688
1689Texas
1690
1691 http://ftp.sedl.org/pub/mirrors/CPAN/
556e28cf 1692 ftp://mirror.telentente.com/pub/CPAN
4e860d0a 1693
1694=item *
1695
1696Utah
1697
1698 ftp://mirror.xmission.com/CPAN/
1699
1700=item *
1701
1702Virginia
1703
1704 http://mirrors.rcn.net/pub/lang/CPAN/
1705 ftp://mirrors.rcn.net/pub/lang/CPAN/
556e28cf 1706 http://perl.secsup.org/
1707 ftp://perl.secsup.org/pub/perl/
1708 http://mirrors.phihost.com/CPAN/
1709 ftp://mirrors.phihost.com/CPAN/
4e860d0a 1710 ftp://ruff.cs.jmu.edu/pub/CPAN/
1711 http://perl.Liquidation.com/CPAN/
1712
1713=item *
1714
1715Washington
1716
1717 http://cpan.llarian.net/
1718 ftp://cpan.llarian.net/pub/CPAN/
37a78d01 1719 http://cpan.mirrorcentral.com/
1720 ftp://ftp.mirrorcentral.com/pub/CPAN/
4e860d0a 1721 ftp://ftp-mirror.internap.com/pub/CPAN/
4e860d0a 1722
556e28cf 1723=item *
1724
1725Wisconsin
1726
1727 http://mirror.sit.wisc.edu/pub/CPAN/
1728 ftp://mirror.sit.wisc.edu/pub/CPAN/
4e860d0a 1729
1730=back
1731
1732=head2 Oceania
1733
1734=over 4
1735
1736=item *
1737
1738Australia
1739
1740 http://ftp.planetmirror.com/pub/CPAN/
1741 ftp://ftp.planetmirror.com/pub/CPAN/
1742 ftp://mirror.aarnet.edu.au/pub/perl/CPAN/
1743 ftp://cpan.topend.com.au/pub/CPAN/
1744
1745=item *
1746
1747New Zealand
556e28cf 1748
4e860d0a 1749 ftp://ftp.auckland.ac.nz/pub/perl/CPAN/
1750
1751=back
1752
1753=head2 South America
1754
1755=over 4
1756
1757=item *
1758
1759Argentina
1760
1761 ftp://mirrors.bannerlandia.com.ar/mirrors/CPAN/
1762
1763=item *
1764
1765Brazil
1766
1767 ftp://cpan.pop-mg.com.br/pub/CPAN/
37a78d01 1768 ftp://ftp.matrix.com.br/pub/perl/CPAN/
4e860d0a 1769
1770=item *
1771
1772Chile
1773
1774 ftp://ftp.psinet.cl/pub/programming/perl/CPAN/
f102b883 1775
1776=back
1777
1778For an up-to-date listing of CPAN sites,
4e860d0a 1779see http://www.cpan.org/SITES or ftp://www.cpan.org/SITES .
f102b883 1780
1781=head1 Modules: Creation, Use, and Abuse
1782
1783(The following section is borrowed directly from Tim Bunce's modules
1784file, available at your nearest CPAN site.)
1785
1786Perl implements a class using a package, but the presence of a
1787package doesn't imply the presence of a class. A package is just a
1788namespace. A class is a package that provides subroutines that can be
1789used as methods. A method is just a subroutine that expects, as its
1790first argument, either the name of a package (for "static" methods),
1791or a reference to something (for "virtual" methods).
1792
1793A module is a file that (by convention) provides a class of the same
1794name (sans the .pm), plus an import method in that class that can be
1795called to fetch exported symbols. This module may implement some of
1796its methods by loading dynamic C or C++ objects, but that should be
1797totally transparent to the user of the module. Likewise, the module
1798might set up an AUTOLOAD function to slurp in subroutine definitions on
1799demand, but this is also transparent. Only the F<.pm> file is required to
2e1d04bc 1800exist. See L<perlsub>, L<perltoot>, and L<AutoLoader> for details about
f102b883 1801the AUTOLOAD mechanism.
1802
1803=head2 Guidelines for Module Creation
1804
1805=over 4
1806
4e860d0a 1807=item *
1808
1809Do similar modules already exist in some form?
f102b883 1810
1811If so, please try to reuse the existing modules either in whole or
1812by inheriting useful features into a new class. If this is not
1813practical try to get together with the module authors to work on
1814extending or enhancing the functionality of the existing modules.
1815A perfect example is the plethora of packages in perl4 for dealing
1816with command line options.
1817
1818If you are writing a module to expand an already existing set of
1819modules, please coordinate with the author of the package. It
1820helps if you follow the same naming scheme and module interaction
1821scheme as the original author.
1822
4e860d0a 1823=item *
1824
1825Try to design the new module to be easy to extend and reuse.
f102b883 1826
9f1b1f2d 1827Try to C<use warnings;> (or C<use warnings qw(...);>).
1828Remember that you can add C<no warnings qw(...);> to individual blocks
2e1d04bc 1829of code that need less warnings.
19799a22 1830
f102b883 1831Use blessed references. Use the two argument form of bless to bless
1832into the class name given as the first parameter of the constructor,
1833e.g.,:
1834
1835 sub new {
2e1d04bc 1836 my $class = shift;
1837 return bless {}, $class;
f102b883 1838 }
1839
1840or even this if you'd like it to be used as either a static
1841or a virtual method.
1842
1843 sub new {
2e1d04bc 1844 my $self = shift;
1845 my $class = ref($self) || $self;
1846 return bless {}, $class;
f102b883 1847 }
1848
1849Pass arrays as references so more parameters can be added later
1850(it's also faster). Convert functions into methods where
1851appropriate. Split large methods into smaller more flexible ones.
1852Inherit methods from other modules if appropriate.
1853
1854Avoid class name tests like: C<die "Invalid" unless ref $ref eq 'FOO'>.
19799a22 1855Generally you can delete the C<eq 'FOO'> part with no harm at all.
f102b883 1856Let the objects look after themselves! Generally, avoid hard-wired
1857class names as far as possible.
1858
c47ff5f1 1859Avoid C<< $r->Class::func() >> where using C<@ISA=qw(... Class ...)> and
1860C<< $r->func() >> would work (see L<perlbot> for more details).
f102b883 1861
1862Use autosplit so little used or newly added functions won't be a
5a964f20 1863burden to programs that don't use them. Add test functions to
f102b883 1864the module after __END__ either using AutoSplit or by saying:
1865
1866 eval join('',<main::DATA>) || die $@ unless caller();
1867
1868Does your module pass the 'empty subclass' test? If you say
19799a22 1869C<@SUBCLASS::ISA = qw(YOURCLASS);> your applications should be able
f102b883 1870to use SUBCLASS in exactly the same way as YOURCLASS. For example,
1871does your application still work if you change: C<$obj = new YOURCLASS;>
1872into: C<$obj = new SUBCLASS;> ?
1873
1874Avoid keeping any state information in your packages. It makes it
1875difficult for multiple other packages to use yours. Keep state
1876information in objects.
1877
2e1d04bc 1878Always use B<-w>.
19799a22 1879
1880Try to C<use strict;> (or C<use strict qw(...);>).
f102b883 1881Remember that you can add C<no strict qw(...);> to individual blocks
2e1d04bc 1882of code that need less strictness.
19799a22 1883
2e1d04bc 1884Always use B<-w>.
19799a22 1885
f102b883 1886Follow the guidelines in the perlstyle(1) manual.
1887
19799a22 1888Always use B<-w>.
1889
4e860d0a 1890=item *
1891
1892Some simple style guidelines
f102b883 1893
5a964f20 1894The perlstyle manual supplied with Perl has many helpful points.
f102b883 1895
1896Coding style is a matter of personal taste. Many people evolve their
1897style over several years as they learn what helps them write and
1898maintain good code. Here's one set of assorted suggestions that
1899seem to be widely used by experienced developers:
1900
1901Use underscores to separate words. It is generally easier to read
1902$var_names_like_this than $VarNamesLikeThis, especially for
1903non-native speakers of English. It's also a simple rule that works
1904consistently with VAR_NAMES_LIKE_THIS.
1905
1906Package/Module names are an exception to this rule. Perl informally
1907reserves lowercase module names for 'pragma' modules like integer
1908and strict. Other modules normally begin with a capital letter and
1909use mixed case with no underscores (need to be short and portable).
1910
1911You may find it helpful to use letter case to indicate the scope
1912or nature of a variable. For example:
1913
5a964f20 1914 $ALL_CAPS_HERE constants only (beware clashes with Perl vars)
f102b883 1915 $Some_Caps_Here package-wide global/static
1916 $no_caps_here function scope my() or local() variables
1917
1918Function and method names seem to work best as all lowercase.
c47ff5f1 1919e.g., C<< $obj->as_string() >>.
f102b883 1920
1921You can use a leading underscore to indicate that a variable or
1922function should not be used outside the package that defined it.
1923
4e860d0a 1924=item *
1925
1926Select what to export.
f102b883 1927
1928Do NOT export method names!
1929
1930Do NOT export anything else by default without a good reason!
1931
1932Exports pollute the namespace of the module user. If you must
1933export try to use @EXPORT_OK in preference to @EXPORT and avoid
1934short or common names to reduce the risk of name clashes.
1935
1936Generally anything not exported is still accessible from outside the
c47ff5f1 1937module using the ModuleName::item_name (or C<< $blessed_ref->method >>)
f102b883 1938syntax. By convention you can use a leading underscore on names to
1939indicate informally that they are 'internal' and not for public use.
1940
1941(It is actually possible to get private functions by saying:
1942C<my $subref = sub { ... }; &$subref;>. But there's no way to call that
1943directly as a method, because a method must have a name in the symbol
1944table.)
1945
1946As a general rule, if the module is trying to be object oriented
1947then export nothing. If it's just a collection of functions then
1948@EXPORT_OK anything but use @EXPORT with caution.
1949
4e860d0a 1950=item *
1951
1952Select a name for the module.
f102b883 1953
1954This name should be as descriptive, accurate, and complete as
1955possible. Avoid any risk of ambiguity. Always try to use two or
1956more whole words. Generally the name should reflect what is special
1957about what the module does rather than how it does it. Please use
1958nested module names to group informally or categorize a module.
1959There should be a very good reason for a module not to have a nested name.
1960Module names should begin with a capital letter.
1961
1962Having 57 modules all called Sort will not make life easy for anyone
1963(though having 23 called Sort::Quick is only marginally better :-).
1964Imagine someone trying to install your module alongside many others.
1965If in any doubt ask for suggestions in comp.lang.perl.misc.
1966
1967If you are developing a suite of related modules/classes it's good
1968practice to use nested classes with a common prefix as this will
1969avoid namespace clashes. For example: Xyz::Control, Xyz::View,
1970Xyz::Model etc. Use the modules in this list as a naming guide.
1971
1972If adding a new module to a set, follow the original author's
1973standards for naming modules and the interface to methods in
1974those modules.
1975
165c0277 1976If developing modules for private internal or project specific use,
1977that will never be released to the public, then you should ensure
1978that their names will not clash with any future public module. You
1979can do this either by using the reserved Local::* category or by
1980using a category name that includes an underscore like Foo_Corp::*.
1981
f102b883 1982To be portable each component of a module name should be limited to
198311 characters. If it might be used on MS-DOS then try to ensure each is
1984unique in the first 8 characters. Nested modules make this easier.
1985
4e860d0a 1986=item *
1987
1988Have you got it right?
f102b883 1989
1990How do you know that you've made the right decisions? Have you
1991picked an interface design that will cause problems later? Have
1992you picked the most appropriate name? Do you have any questions?
1993
1994The best way to know for sure, and pick up many helpful suggestions,
1995is to ask someone who knows. Comp.lang.perl.misc is read by just about
1996all the people who develop modules and it's the best place to ask.
1997
1998All you need to do is post a short summary of the module, its
1999purpose and interfaces. A few lines on each of the main methods is
2000probably enough. (If you post the whole module it might be ignored
2001by busy people - generally the very people you want to read it!)
2002
2003Don't worry about posting if you can't say when the module will be
2004ready - just say so in the message. It might be worth inviting
2005others to help you, they may be able to complete it for you!
2006
4e860d0a 2007=item *
2008
2009README and other Additional Files.
f102b883 2010
2011It's well known that software developers usually fully document the
2012software they write. If, however, the world is in urgent need of
2013your software and there is not enough time to write the full
2014documentation please at least provide a README file containing:
2015
2016=over 10
2017
2018=item *
4e860d0a 2019
f102b883 2020A description of the module/package/extension etc.
2021
2022=item *
4e860d0a 2023
f102b883 2024A copyright notice - see below.
2025
2026=item *
4e860d0a 2027
f102b883 2028Prerequisites - what else you may need to have.
2029
2030=item *
4e860d0a 2031
f102b883 2032How to build it - possible changes to Makefile.PL etc.
2033
2034=item *
4e860d0a 2035
f102b883 2036How to install it.
2037
2038=item *
4e860d0a 2039
f102b883 2040Recent changes in this release, especially incompatibilities
2041
2042=item *
4e860d0a 2043
f102b883 2044Changes / enhancements you plan to make in the future.
2045
2046=back
2047
2048If the README file seems to be getting too large you may wish to
2049split out some of the sections into separate files: INSTALL,
2050Copying, ToDo etc.
2051
2052=over 4
2053
37a78d01 2054=item *
f102b883 2055
37a78d01 2056Adding a Copyright Notice.
4e860d0a 2057
f102b883 2058How you choose to license your work is a personal decision.
2059The general mechanism is to assert your Copyright and then make
2060a declaration of how others may copy/use/modify your work.
2061
2062Perl, for example, is supplied with two types of licence: The GNU
2063GPL and The Artistic Licence (see the files README, Copying, and
2064Artistic). Larry has good reasons for NOT just using the GNU GPL.
2065
2066My personal recommendation, out of respect for Larry, Perl, and the
5a964f20 2067Perl community at large is to state something simply like:
f102b883 2068
2069 Copyright (c) 1995 Your Name. All rights reserved.
2070 This program is free software; you can redistribute it and/or
2071 modify it under the same terms as Perl itself.
2072
2073This statement should at least appear in the README file. You may
2074also wish to include it in a Copying file and your source files.
2075Remember to include the other words in addition to the Copyright.
2076
4e860d0a 2077=item *
2078
2079Give the module a version/issue/release number.
f102b883 2080
2081To be fully compatible with the Exporter and MakeMaker modules you
2082should store your module's version number in a non-my package
2083variable called $VERSION. This should be a floating point
2084number with at least two digits after the decimal (i.e., hundredths,
2085e.g, C<$VERSION = "0.01">). Don't use a "1.3.2" style version.
19799a22 2086See L<Exporter> for details.
f102b883 2087
2088It may be handy to add a function or method to retrieve the number.
2089Use the number in announcements and archive file names when
2090releasing the module (ModuleName-1.02.tar.Z).
2091See perldoc ExtUtils::MakeMaker.pm for details.
2092
4e860d0a 2093=item *
2094
2095How to release and distribute a module.
f102b883 2096
2097It's good idea to post an announcement of the availability of your
2098module (or the module itself if small) to the comp.lang.perl.announce
2099Usenet newsgroup. This will at least ensure very wide once-off
2100distribution.
2101
2e1d04bc 2102If possible, register the module with CPAN. You should
f102b883 2103include details of its location in your announcement.
2104
2105Some notes about ftp archives: Please use a long descriptive file
5a964f20 2106name that includes the version number. Most incoming directories
f102b883 2107will not be readable/listable, i.e., you won't be able to see your
2108file after uploading it. Remember to send your email notification
2109message as soon as possible after uploading else your file may get
2110deleted automatically. Allow time for the file to be processed
2111and/or check the file has been processed before announcing its
2112location.
2113
2114FTP Archives for Perl Modules:
2115
6cecdcac 2116Follow the instructions and links on:
f102b883 2117
4e860d0a 2118 http://www.cpan.org/modules/00modlist.long.html
2119 http://www.cpan.org/modules/04pause.html
f102b883 2120
2121or upload to one of these sites:
2122
6cecdcac 2123 https://pause.kbx.de/pause/
2124 http://pause.perl.org/pause/
f102b883 2125
6cecdcac 2126and notify <modules@perl.org>.
f102b883 2127
2128By using the WWW interface you can ask the Upload Server to mirror
2129your modules from your ftp or WWW site into your own directory on
2130CPAN!
2131
2132Please remember to send me an updated entry for the Module list!
2133
4e860d0a 2134=item *
2135
2136Take care when changing a released module.
f102b883 2137
7b8d334a 2138Always strive to remain compatible with previous released versions.
2139Otherwise try to add a mechanism to revert to the
19799a22 2140old behavior if people rely on it. Document incompatible changes.
f102b883 2141
2142=back
2143
2144=back
2145
2146=head2 Guidelines for Converting Perl 4 Library Scripts into Modules
2147
2148=over 4
2149
4e860d0a 2150=item *
2151
2152There is no requirement to convert anything.
f102b883 2153
2154If it ain't broke, don't fix it! Perl 4 library scripts should
2155continue to work with no problems. You may need to make some minor
2156changes (like escaping non-array @'s in double quoted strings) but
2157there is no need to convert a .pl file into a Module for just that.
2158
4e860d0a 2159=item *
2160
2161Consider the implications.
f102b883 2162
5a964f20 2163All Perl applications that make use of the script will need to
f102b883 2164be changed (slightly) if the script is converted into a module. Is
2165it worth it unless you plan to make other changes at the same time?
2166
4e860d0a 2167=item *
2168
2169Make the most of the opportunity.
f102b883 2170
2171If you are going to convert the script to a module you can use the
19799a22 2172opportunity to redesign the interface. The guidelines for module
2173creation above include many of the issues you should consider.
f102b883 2174
4e860d0a 2175=item *
2176
2177The pl2pm utility will get you started.
f102b883 2178
2179This utility will read *.pl files (given as parameters) and write
2180corresponding *.pm files. The pl2pm utilities does the following:
2181
2182=over 10
2183
2184=item *
4e860d0a 2185
f102b883 2186Adds the standard Module prologue lines
2187
2188=item *
4e860d0a 2189
f102b883 2190Converts package specifiers from ' to ::
2191
2192=item *
4e860d0a 2193
f102b883 2194Converts die(...) to croak(...)
2195
2196=item *
4e860d0a 2197
f102b883 2198Several other minor changes
2199
2200=back
2201
2202Being a mechanical process pl2pm is not bullet proof. The converted
2203code will need careful checking, especially any package statements.
2204Don't delete the original .pl file till the new .pm one works!
2205
2206=back
2207
2208=head2 Guidelines for Reusing Application Code
2209
2210=over 4
2211
4e860d0a 2212=item *
551e1d92 2213
2214Complete applications rarely belong in the Perl Module Library.
f102b883 2215
4e860d0a 2216=item *
551e1d92 2217
2218Many applications contain some Perl code that could be reused.
f102b883 2219
2220Help save the world! Share your code in a form that makes it easy
2221to reuse.
2222
4e860d0a 2223=item *
551e1d92 2224
2225Break-out the reusable code into one or more separate module files.
f102b883 2226
4e860d0a 2227=item *
551e1d92 2228
2229Take the opportunity to reconsider and redesign the interfaces.
2230
4e860d0a 2231=item *
f102b883 2232
551e1d92 2233In some cases the 'application' can then be reduced to a small
f102b883 2234
2235fragment of code built on top of the reusable modules. In these cases
2236the application could invoked as:
2237
5a964f20 2238 % perl -e 'use Module::Name; method(@ARGV)' ...
f102b883 2239or
5a964f20 2240 % perl -mModule::Name ... (in perl5.002 or higher)
f102b883 2241
2242=back
2243
2244=head1 NOTE
2245
2246Perl does not enforce private and public parts of its modules as you may
2247have been used to in other languages like C++, Ada, or Modula-17. Perl
2248doesn't have an infatuation with enforced privacy. It would prefer
2249that you stayed out of its living room because you weren't invited, not
2250because it has a shotgun.
2251
2252The module and its user have a contract, part of which is common law,
2253and part of which is "written". Part of the common law contract is
2254that a module doesn't pollute any namespace it wasn't asked to. The
2255written contract for the module (A.K.A. documentation) may make other
2256provisions. But then you know when you C<use RedefineTheWorld> that
2257you're redefining the world and willing to take the consequences.