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