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