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