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