Enable -Mencoding=foobar also for string literals.
[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
e61ecf27 135=item threads
136
137Perl extension allowing use of interpreter based threads from perl
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
e61ecf27 507File::Spec for Unix, base for other File::Spec modules
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
e61ecf27 573=item Lingua::KO::Hangul::Util
574
575Utility functions for Hangul Syllables
576
4e860d0a 577=item Locale::Constants
578
579Constants for Locale codes
580
581=item Locale::Country
582
583ISO codes for country identification (ISO 3166)
584
585=item Locale::Currency
586
587ISO three letter codes for currency identification (ISO 4217)
588
589=item Locale::Language
590
591ISO two letter codes for language identification (ISO 639)
592
422a9aca 593=item Locale::Maketext
594
595Framework for localization
596
597=item Locale::Maketext::TPJ13
598
599Article about software localization
600
f102b883 601=item Math::BigFloat
602
5d80033a 603Arbitrary size floating point math package
f102b883 604
605=item Math::BigInt
606
19799a22 607Arbitrary size integer math package
f102b883 608
d0363f02 609=item Math::BigInt::Calc
610
611Pure Perl module to support Math::BigInt
612
f102b883 613=item Math::Complex
614
9e107c59 615Complex numbers and associated mathematical functions
f102b883 616
404b15a1 617=item Math::Trig
618
9e107c59 619Trigonometric functions
f102b883 620
5d80033a 621=item Memoize
622
623Make your functions faster by trading space for time
624
625=item Memoize::AnyDBM_File
626
627Glue to provide EXISTS for AnyDBM_File for Storable use
628
629=item Memoize::Expire
630
631Plug-in module for automatic expiration of memoized values
632
633=item Memoize::ExpireFile
634
635Test for Memoize expiration semantics
636
637=item Memoize::ExpireTest
638
639Test for Memoize expiration semantics
640
641=item Memoize::NDBM_File
642
643Glue to provide EXISTS for NDBM_File for Storable use
644
645=item Memoize::SDBM_File
646
647Glue to provide EXISTS for SDBM_File for Storable use
648
649=item Memoize::Saves
650
651Plug-in module to specify which return values should be memoized
652
653=item Memoize::Storable
654
655Store Memoized data in Storable database
656
2e1d04bc 657=item NDBM_File
658
659Tied access to ndbm files
660
1fa7ca25 661=item NEXT
662
663Provide a pseudo-class NEXT that allows method redispatch
664
5d80033a 665=item Net::Cmd
666
667Network Command class (as used by FTP, SMTP etc)
668
669=item Net::Config
670
671Local configuration data for libnet
672
673=item Net::Domain
674
675Attempt to evaluate the current host's internet name and domain
676
5d80033a 677=item Net::FTP
678
679FTP Client class
680
681=item Net::NNTP
682
683NNTP Client class
684
685=item Net::Netrc
686
687OO interface to users netrc file
688
5d80033a 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
5d80033a 701=item Net::Time
702
703Time and daytime network client interface
704
f102b883 705=item Net::hostent
706
9e107c59 707By-name interface to Perl's built-in gethost*() functions
f102b883 708
5d80033a 709=item Net::libnetFAQ
710
711Libnet Frequently Asked Questions
712
f102b883 713=item Net::netent
714
9e107c59 715By-name interface to Perl's built-in getnet*() functions
f102b883 716
717=item Net::protoent
718
9e107c59 719By-name interface to Perl's built-in getproto*() functions
f102b883 720
721=item Net::servent
722
9e107c59 723By-name interface to Perl's built-in getserv*() functions
f102b883 724
19799a22 725=item O
f102b883 726
19799a22 727Generic interface to Perl Compiler backends
f102b883 728
2e1d04bc 729=item ODBM_File
f102b883 730
2e1d04bc 731Tied access to odbm files
f102b883 732
2e1d04bc 733=item Opcode
f102b883 734
2e1d04bc 735Disable named opcodes when compiling perl code
19799a22 736
4e860d0a 737=item POSIX
738
739Perl interface to IEEE Std 1003.1
740
741=item PerlIO
742
743On demand loader for PerlIO layers and root of PerlIO::* name space
744
9e107c59 745=item Pod::Checker
746
747Check pod documents for syntax errors
748
2e1d04bc 749=item Pod::Find
750
751Find POD documents in directory trees
752
19799a22 753=item Pod::Html
754
9e107c59 755Module to convert pod files to HTML
756
757=item Pod::InputObjects
758
2e1d04bc 759Objects representing POD input paragraphs, commands, etc.
9e107c59 760
13a2d996 761=item Pod::LaTeX
762
763Convert Pod data to formatted Latex
764
9e107c59 765=item Pod::Man
766
767Convert POD data to formatted *roff input
768
2e1d04bc 769=item Pod::ParseUtils
770
771Helpers for POD parsing and conversion
772
9e107c59 773=item Pod::Parser
774
775Base class for creating POD filters and translators
776
2e1d04bc 777=item Pod::Plainer
778
779Perl extension for converting Pod to old style Pod.
780
9e107c59 781=item Pod::Select
782
783Extract selected sections of POD from input
19799a22 784
785=item Pod::Text
786
9e107c59 787Convert POD data to formatted ASCII text
788
789=item Pod::Text::Color
790
791Convert POD data to formatted color ASCII text
792
4e860d0a 793=item Pod::Text::Overstrike
794
795Convert POD data to formatted overstrike text
796
2e1d04bc 797=item Pod::Text::Termcap
798
799Convert POD data to ASCII text with format escapes
800
9e107c59 801=item Pod::Usage
802
803Print a usage message from embedded pod documentation
f102b883 804
805=item SDBM_File
806
19799a22 807Tied access to sdbm files
f102b883 808
809=item Safe
810
19799a22 811Compile and execute code in restricted compartments
f102b883 812
813=item Search::Dict
814
9e107c59 815Search for key in dictionary file
f102b883 816
817=item SelectSaver
818
9e107c59 819Save and restore selected file handle
f102b883 820
821=item SelfLoader
822
9e107c59 823Load functions only on demand
f102b883 824
825=item Shell
826
2e1d04bc 827Run shell commands transparently within perl
f102b883 828
829=item Socket
830
2e1d04bc 831Load the C socket.h defines and structure manipulators
f102b883 832
13a2d996 833=item Storable
834
835Persistency for perl data structures
836
4e860d0a 837=item Switch
838
839A switch statement for Perl
840
f102b883 841=item Symbol
842
9e107c59 843Manipulate Perl symbols and their names
f102b883 844
2e1d04bc 845=item Term::ANSIColor
f102b883 846
2e1d04bc 847Color screen output using ANSI escape sequences
f102b883 848
849=item Term::Cap
850
2e1d04bc 851Perl termcap interface
f102b883 852
853=item Term::Complete
854
2e1d04bc 855Perl word completion module
f102b883 856
857=item Term::ReadLine
858
2e1d04bc 859Perl interface to various C<readline> packages. If
19799a22 860
861=item Test
862
9e107c59 863Provides a simple framework for writing test scripts
f102b883 864
865=item Test::Harness
866
2e1d04bc 867Run perl standard test scripts with statistics
f102b883 868
7a49b635 869=item Test::More
870
871Yet another framework for writing test scripts
872
873=item Test::Simple
874
875Basic utilities for writing tests.
876
e61ecf27 877=item Test::Tutorial
878
879A tutorial about writing really basic 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
905=item Tie::Array
906
9e107c59 907Base class for tied arrays
19799a22 908
909=item Tie::Handle
910
9e107c59 911Base class definitions for tied handles
19799a22 912
9e107c59 913=item Tie::Hash
f102b883 914
9e107c59 915Base class definitions for tied hashes
f102b883 916
917=item Tie::RefHash
918
9e107c59 919Use references as hash keys
f102b883 920
9e107c59 921=item Tie::Scalar
f102b883 922
9e107c59 923Base class definitions for tied scalars
f102b883 924
925=item Tie::SubstrHash
926
19799a22 927Fixed-table-size, fixed-key-length hashing
f102b883 928
929=item Time::Local
930
9e107c59 931Efficiently compute time from local and GMT time
f102b883 932
933=item Time::gmtime
934
9e107c59 935By-name interface to Perl's built-in gmtime() function
f102b883 936
937=item Time::localtime
938
9e107c59 939By-name interface to Perl's built-in localtime() function
f102b883 940
941=item Time::tm
942
9e107c59 943Internal object used by Time::gmtime and Time::localtime
f102b883 944
945=item UNIVERSAL
946
9e107c59 947Base class for ALL classes (blessed references)
f102b883 948
e61ecf27 949=item Unicode::Collate
950
951Use UCA (Unicode Collation Algorithm)
952
953=item Unicode::Normalize
954
955Normalized forms of Unicode text
956
957=item Unicode::UCD
fbe3d936 958
959Unicode character database
960
f102b883 961=item User::grent
962
9e107c59 963By-name interface to Perl's built-in getgr*() functions
f102b883 964
965=item User::pwent
966
9e107c59 967By-name interface to Perl's built-in getpw*() functions
f102b883 968
4e860d0a 969=item Win32
970
971Interfaces to some Win32 API Functions
972
f102b883 973=back
974
19799a22 975To find out I<all> modules installed on your system, including
2e1d04bc 976those without documentation or outside the standard release,
b1866b2d 977just do this:
f102b883 978
5a964f20 979 % find `perl -e 'print "@INC"'` -name '*.pm' -print
f102b883 980
2e1d04bc 981They should all have their own documentation installed and accessible
982via your system man(1) command. If you do not have a B<find>
19799a22 983program, you can use the Perl B<find2perl> program instead, which
984generates Perl code as output you can run through perl. If you
985have a B<man> program but it doesn't find your modules, you'll have
2e1d04bc 986to fix your manpath. See L<perl> for details. If you have no
987system B<man> command, you might try the B<perldoc> program.
f102b883 988
989=head2 Extension Modules
990
19799a22 991Extension modules are written in C (or a mix of Perl and C). They
992are usually dynamically loaded into Perl if and when you need them,
2e1d04bc 993but may also be be linked in statically. Supported extension modules
19799a22 994include Socket, Fcntl, and POSIX.
f102b883 995
996Many popular C extension modules do not come bundled (at least, not
19799a22 997completely) due to their sizes, volatility, or simply lack of time
998for adequate testing and configuration across the multitude of
999platforms on which Perl was beta-tested. You are encouraged to
1000look for them on CPAN (described below), or using web search engines
1001like Alta Vista or Deja News.
f102b883 1002
1003=head1 CPAN
1004
19799a22 1005CPAN stands for Comprehensive Perl Archive Network; it's a globally
1006replicated trove of Perl materials, including documentation, style
2e1d04bc 1007guides, tricks and traps, alternate ports to non-Unix systems and
19799a22 1008occasional binary distributions for these. Search engines for
1009CPAN can be found at http://cpan.perl.com/ and at
1010http://theory.uwinnipeg.ca/mod_perl/cpan-search.pl .
1011
1012Most importantly, CPAN includes around a thousand unbundled modules,
1013some of which require a C compiler to build. Major categories of
1014modules are:
f102b883 1015
4e860d0a 1016=over
f102b883 1017
1018=item *
551e1d92 1019
f102b883 1020Language Extensions and Documentation Tools
1021
1022=item *
551e1d92 1023
f102b883 1024Development Support
1025
1026=item *
551e1d92 1027
f102b883 1028Operating System Interfaces
1029
1030=item *
551e1d92 1031
f102b883 1032Networking, Device Control (modems) and InterProcess Communication
1033
1034=item *
551e1d92 1035
f102b883 1036Data Types and Data Type Utilities
1037
1038=item *
551e1d92 1039
f102b883 1040Database Interfaces
1041
1042=item *
551e1d92 1043
f102b883 1044User Interfaces
1045
1046=item *
551e1d92 1047
f102b883 1048Interfaces to / Emulations of Other Programming Languages
1049
1050=item *
551e1d92 1051
f102b883 1052File Names, File Systems and File Locking (see also File Handles)
1053
1054=item *
551e1d92 1055
f102b883 1056String Processing, Language Text Processing, Parsing, and Searching
1057
1058=item *
551e1d92 1059
f102b883 1060Option, Argument, Parameter, and Configuration File Processing
1061
1062=item *
551e1d92 1063
f102b883 1064Internationalization and Locale
1065
1066=item *
551e1d92 1067
f102b883 1068Authentication, Security, and Encryption
1069
1070=item *
551e1d92 1071
f102b883 1072World Wide Web, HTML, HTTP, CGI, MIME
1073
1074=item *
551e1d92 1075
f102b883 1076Server and Daemon Utilities
1077
1078=item *
551e1d92 1079
f102b883 1080Archiving and Compression
1081
1082=item *
551e1d92 1083
f102b883 1084Images, Pixmap and Bitmap Manipulation, Drawing, and Graphing
1085
1086=item *
551e1d92 1087
f102b883 1088Mail and Usenet News
1089
1090=item *
551e1d92 1091
f102b883 1092Control Flow Utilities (callbacks and exceptions etc)
1093
1094=item *
551e1d92 1095
f102b883 1096File Handle and Input/Output Stream Utilities
1097
1098=item *
551e1d92 1099
f102b883 1100Miscellaneous Modules
1101
1102=back
1103
19799a22 1104Registered CPAN sites as of this writing include the following.
f102b883 1105You should try to choose one close to you:
1106
4e860d0a 1107=head2 Africa
1108
cea6626f 1109=over 4
f102b883 1110
4e860d0a 1111=item *
1112
1113South Africa
1114
1115 ftp://ftp.is.co.za/programming/perl/CPAN/
1116 ftp://ftp.saix.net/pub/CPAN/
1117 ftp://ftpza.co.za/pub/mirrors/cpan/
1118 ftp://ftp.sun.ac.za/CPAN/
1119
1120=back
1121
1122=head2 Asia
1123
1124=over 4
1125
1126=item *
1127
1128China
1129
1130 ftp://freesoft.cei.gov.cn/pub/languages/perl/CPAN/
1131 http://www2.linuxforum.net/mirror/CPAN/
1132 http://cpan.shellhung.org/
1133 ftp://ftp.shellhung.org/pub/CPAN
1134
1135=item *
1136
1137Hong Kong
1138
1139 http://CPAN.pacific.net.hk/
1140 ftp://ftp.pacific.net.hk/pub/mirror/CPAN/
1141
1142=item *
1143
1144Indonesia
1145
1146 http://piksi.itb.ac.id/CPAN/
1147 ftp://mirrors.piksi.itb.ac.id/CPAN/
1148 http://CPAN.mweb.co.id/
1149 ftp://ftp.mweb.co.id/pub/languages/perl/CPAN/
1150
1151=item *
1152
1153Israel
1154
1155 http://www.iglu.org.il:/pub/CPAN/
1156 ftp://ftp.iglu.org.il/pub/CPAN/
1157 http://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/
1158 ftp://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/
1159
1160=item *
1161
1162Japan
1163
1164 ftp://ftp.u-aizu.ac.jp/pub/lang/perl/CPAN/
1165 ftp://ftp.kddlabs.co.jp/CPAN/
1166 http://mirror.nucba.ac.jp/mirror/Perl/
1167 ftp://mirror.nucba.ac.jp/mirror/Perl/
1168 ftp://ftp.meisei-u.ac.jp/pub/CPAN/
1169 ftp://ftp.jaist.ac.jp/pub/lang/perl/CPAN/
1170 ftp://ftp.dti.ad.jp/pub/lang/CPAN/
1171 ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/
1172
1173=item *
1174
1175Saudi Arabia
1176
1177 ftp://ftp.isu.net.sa/pub/CPAN/
1178
1179=item *
1180
1181Singapore
1182
1183 http://cpan.hjc.edu.sg
1184 http://ftp.nus.edu.sg/unix/perl/CPAN/
1185 ftp://ftp.nus.edu.sg/pub/unix/perl/CPAN/
1186
1187=item *
1188
1189South Korea
1190
1191 http://CPAN.bora.net/
1192 ftp://ftp.bora.net/pub/CPAN/
1193 http://ftp.kornet.net/CPAN/
1194 ftp://ftp.kornet.net/pub/CPAN/
1195 ftp://ftp.nuri.net/pub/CPAN/
1196
1197=item *
1198
1199Taiwan
1200
1201 ftp://coda.nctu.edu.tw/UNIX/perl/CPAN
1202 ftp://ftp.ee.ncku.edu.tw/pub/perl/CPAN/
1203 ftp://ftp1.sinica.edu.tw/pub1/perl/CPAN/
1204
1205=item *
1206
1207Thailand
1208
1209 http://download.nectec.or.th/CPAN/
1210 ftp://ftp.nectec.or.th/pub/languages/CPAN/
1211 ftp://ftp.cs.riubon.ac.th/pub/mirrors/CPAN/
1212
1213=back
1214
1215=head2 Central America
1216
1217=over 4
1218
1219=item *
1220
1221Costa Rica
1222
1223 ftp://ftp.linux.co.cr/mirrors/CPAN/
1224 http://ftp.ucr.ac.cr/Unix/CPAN/
1225 ftp://ftp.ucr.ac.cr/pub/Unix/CPAN/
1226
1227=back
1228
1229=head2 Europe
1230
1231=over 4
1232
1233=item *
1234
1235Austria
1236
1237 ftp://ftp.tuwien.ac.at/pub/languages/perl/CPAN/
1238
1239=item *
1240
1241Belgium
1242
1243 http://ftp.easynet.be/CPAN/
1244 ftp://ftp.easynet.be/CPAN/
1245 ftp://ftp.kulnet.kuleuven.ac.be/pub/mirror/CPAN/
1246
1247=item *
1248
1249Bulgaria
1250
1251 ftp://ftp.ntrl.net/pub/mirrors/CPAN/
1252
1253=item *
1254
1255Croatia
1256
1257 ftp://ftp.linux.hr/pub/CPAN/
1258
1259=item *
1260
1261Czech Republic
1262
1263 http://www.fi.muni.cz/pub/perl/
1264 ftp://ftp.fi.muni.cz/pub/perl/
1265 ftp://sunsite.mff.cuni.cz/MIRRORS/ftp.funet.fi/pub/languages/perl/CPAN/
1266
1267=item *
1268
1269Denmark
1270
1271 ftp://sunsite.auc.dk/pub/languages/perl/CPAN/
1272 http://www.cpan.dk/CPAN/
1273 ftp://www.cpan.dk/ftp.cpan.org/CPAN/
1274
1275=item *
1276
1277England
1278
1279 http://www.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN
1280 ftp://ftp.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN/
1281 ftp://ftp.demon.co.uk/pub/mirrors/perl/CPAN/
1282 ftp://ftp.flirble.org/pub/languages/perl/CPAN/
1283 ftp://ftp.plig.org/pub/CPAN/
1284 ftp://sunsite.doc.ic.ac.uk/packages/CPAN/
1285 http://mirror.uklinux.net/CPAN/
1286 ftp://mirror.uklinux.net/pub/CPAN/
1287 ftp://usit.shef.ac.uk/pub/packages/CPAN/
1288
1289=item *
1290
1291Estonia
1292
1293 ftp://ftp.ut.ee/pub/languages/perl/CPAN/
1294
1295=item *
1296
1297Finland
1298
1299 ftp://ftp.funet.fi/pub/languages/perl/CPAN/
1300
1301=item *
1302
1303France
1304
1305 ftp://cpan.ftp.worldonline.fr/pub/CPAN/
1306 ftp://ftp.club-internet.fr/pub/perl/CPAN/
1307 ftp://ftp.lip6.fr/pub/perl/CPAN/
1308 ftp://ftp.oleane.net/pub/mirrors/CPAN/
1309 ftp://ftp.pasteur.fr/pub/computing/CPAN/
1310 ftp://cpan.cict.fr/pub/CPAN/
1311 ftp://ftp.uvsq.fr/pub/perl/CPAN/
1312
1313=item *
1314
1315Germany
1316
1317 ftp://ftp.rz.ruhr-uni-bochum.de/pub/CPAN/
1318 ftp://ftp.freenet.de/pub/ftp.cpan.org/pub/CPAN/
1319 ftp://ftp.uni-erlangen.de/pub/source/CPAN/
1320 ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/CPAN
1321 ftp://ftp.gigabell.net/pub/CPAN/
1322 http://ftp.gwdg.de/pub/languages/perl/CPAN/
1323 ftp://ftp.gwdg.de/pub/languages/perl/CPAN/
1324 ftp://ftp.uni-hamburg.de/pub/soft/lang/perl/CPAN/
1325 ftp://ftp.leo.org/pub/comp/general/programming/languages/script/perl/CPAN/
1326 ftp://ftp.mpi-sb.mpg.de/pub/perl/CPAN/
1327 ftp://ftp.gmd.de/mirrors/CPAN/
1328
1329=item *
1330
1331Greece
1332
1333 ftp://ftp.forthnet.gr/pub/languages/perl/CPAN
1334 ftp://ftp.ntua.gr/pub/lang/perl/
1335
1336=item *
1337
1338Hungary
1339
1340 http://cpan.artifact.hu/
1341 ftp://cpan.artifact.hu/CPAN/
1342 ftp://ftp.kfki.hu/pub/packages/perl/CPAN/
1343
1344=item *
1345
1346Iceland
1347
1348 http://cpan.gm.is/
1349 ftp://ftp.gm.is/pub/CPAN/
1350
1351=item *
1352
1353Ireland
1354
1355 http://cpan.indigo.ie/
1356 ftp://cpan.indigo.ie/pub/CPAN/
1357 http://sunsite.compapp.dcu.ie/pub/perl/
1358 ftp://sunsite.compapp.dcu.ie/pub/perl/
1359
1360=item *
1361
1362Italy
1363
1364 http://cpan.nettuno.it/
1365 http://gusp.dyndns.org/CPAN/
1366 ftp://gusp.dyndns.org/pub/CPAN
1367 http://softcity.iol.it/cpan
1368 ftp://softcity.iol.it/pub/cpan
1369 ftp://ftp.unina.it/pub/Other/CPAN/
1370 ftp://ftp.unipi.it/pub/mirror/perl/CPAN/
1371 ftp://cis.uniRoma2.it/CPAN/
1372 ftp://ftp.edisontel.it/pub/CPAN_Mirror/
1373 ftp://ftp.flashnet.it/pub/CPAN/
1374
1375=item *
1376
1377Latvia
1378
1379 http://kvin.lv/pub/CPAN/
1380
1381=item *
1382
1383Netherlands
1384
1385 ftp://download.xs4all.nl/pub/mirror/CPAN/
1386 ftp://ftp.nl.uu.net/pub/CPAN/
1387 ftp://ftp.nluug.nl/pub/languages/perl/CPAN/
1388 ftp://ftp.cpan.nl/pub/CPAN/
1389 http://www.cs.uu.nl/mirror/CPAN/
1390 ftp://ftp.cs.uu.nl/mirror/CPAN/
1391
1392=item *
1393
1394Norway
1395
1396 ftp://sunsite.uio.no/pub/languages/perl/CPAN/
1397 ftp://ftp.uit.no/pub/languages/perl/cpan/
1398
1399=item *
1400
1401Poland
1402
1403 ftp://ftp.pk.edu.pl/pub/lang/perl/CPAN/
1404 ftp://ftp.mega.net.pl/pub/mirrors/ftp.perl.com/
1405 ftp://ftp.man.torun.pl/pub/doc/CPAN/
1406 ftp://sunsite.icm.edu.pl/pub/CPAN/
1407
1408=item *
1409
1410Portugal
1411
1412 ftp://ftp.ua.pt/pub/CPAN/
1413 ftp://perl.di.uminho.pt/pub/CPAN/
1414 ftp://ftp.ist.utl.pt/pub/CPAN/
1415 ftp://ftp.netc.pt/pub/CPAN/
1416
1417=item *
1418
1419Romania
1420
1421 ftp://archive.logicnet.ro/mirrors/ftp.cpan.org/CPAN/
1422 ftp://ftp.kappa.ro/pub/mirrors/ftp.perl.org/pub/CPAN/
1423 ftp://ftp.dntis.ro/pub/cpan/
1424 ftp://ftp.opsynet.com/cpan/
1425 ftp://ftp.dnttm.ro/pub/CPAN/
1426 ftp://ftp.timisoara.roedu.net/mirrors/CPAN/
1427
1428=item *
1429
1430Russia
1431
1432 ftp://ftp.chg.ru/pub/lang/perl/CPAN/
1433 http://cpan.rinet.ru/
1434 ftp://cpan.rinet.ru/pub/mirror/CPAN/
1435 ftp://ftp.aha.ru/pub/CPAN/
1436 ftp://ftp.sai.msu.su/pub/lang/perl/CPAN/
1437
1438=item *
1439
1440Slovakia
1441
1442 ftp://ftp.entry.sk/pub/languages/perl/CPAN/
1443
1444=item *
1445
1446Slovenia
1447
1448 ftp://ftp.arnes.si/software/perl/CPAN/
1449
1450=item *
1451
1452Spain
1453
1454 ftp://ftp.rediris.es/mirror/CPAN/
1455 ftp://ftp.etse.urv.es/pub/perl/
1456
1457=item *
1458
1459Sweden
1460
1461 http://ftp.du.se/CPAN/
1462 ftp://ftp.du.se/pub/CPAN/
1463 ftp://ftp.sunet.se/pub/lang/perl/CPAN/
1464
1465=item *
1466
1467Switzerland
1468
1469 ftp://ftp.danyk.ch/CPAN/
1470 ftp://sunsite.cnlab-switch.ch/mirror/CPAN/
1471
1472=item *
1473
1474Turkey
1475
1476 ftp://sunsite.bilkent.edu.tr/pub/languages/CPAN/
1477
1478=back
1479
1480=head2 North America
1481
1482=over 4
1483
1484=item *
1485
1486Canada
1487
1488=over 8
1489
1490=item *
1491
1492Alberta
1493
1494 http://sunsite.ualberta.ca/pub/Mirror/CPAN/
1495 ftp://sunsite.ualberta.ca/pub/Mirror/CPAN/
1496
1497=item *
1498
1499Manitoba
1500
1501 http://theoryx5.uwinnipeg.ca/pub/CPAN/
1502 ftp://theoryx5.uwinnipeg.ca/pub/CPAN/
1503
1504=item *
1505
1506Nova Scotia
1507
1508 ftp://cpan.chebucto.ns.ca/pub/CPAN/
1509
1510=item *
1511
1512Ontario
1513
1514 ftp://ftp.crc.ca/pub/packages/lang/perl/CPAN/
1515
1516=item *
1517
1518Mexico
1519
1520 http://www.msg.com.mx/CPAN/
1521 ftp://ftp.msg.com.mx/pub/CPAN/
1522
1523=back
1524
1525=item *
1526
1527United States
1528
1529=over 8
1530
1531=item *
1532
1533Alabama
1534
1535 http://mirror.hiwaay.net/CPAN/
1536 ftp://mirror.hiwaay.net/CPAN/
1537
1538=item *
1539
1540California
1541
1542 http://www.cpan.org/
1543 ftp://ftp.cpan.org/CPAN/
1544 ftp://cpan.nas.nasa.gov/pub/perl/CPAN/
1545 ftp://ftp.digital.com/pub/plan/perl/CPAN/
1546 http://www.kernel.org/pub/mirrors/cpan/
1547 ftp://ftp.kernel.org/pub/mirrors/cpan/
1548 http://www.perl.com/CPAN/
1549 http://download.sourceforge.net/mirrors/CPAN/
1550
1551=item *
1552
1553Colorado
1554
1555 ftp://ftp.cs.colorado.edu/pub/perl/CPAN/
1556
1557=item *
1558
1559Florida
1560
1561 ftp://ftp.cise.ufl.edu/pub/perl/CPAN/
1562
1563=item *
1564
1565Georgia
1566
1567 ftp://ftp.twoguys.org/CPAN/
1568
1569=item *
1570
1571Illinois
1572
1573 http://www.neurogames.com/mirrors/CPAN
1574 http://uiarchive.uiuc.edu/mirrors/ftp/ftp.cpan.org/pub/CPAN/
1575 ftp://uiarchive.uiuc.edu/mirrors/ftp/ftp.cpan.org/pub/CPAN/
1576
1577=item *
1578
1579Indiana
1580
1581 ftp://ftp.uwsg.indiana.edu/pub/perl/CPAN/
1582 http://cpan.nitco.com/
1583 ftp://cpan.nitco.com/pub/CPAN/
1584 ftp://cpan.in-span.net/
1585 http://csociety-ftp.ecn.purdue.edu/pub/CPAN
1586 ftp://csociety-ftp.ecn.purdue.edu/pub/CPAN
1587
1588=item *
1589
1590Kentucky
1591
1592 http://cpan.uky.edu/
1593 ftp://cpan.uky.edu/pub/CPAN/
1594
1595=item *
1596
1597Massachusetts
1598
1599 ftp://ftp.ccs.neu.edu/net/mirrors/ftp.funet.fi/pub/languages/perl/CPAN/
1600 ftp://ftp.iguide.com/pub/mirrors/packages/perl/CPAN/
1601
1602=item *
1603
1604New Jersey
1605
1606 ftp://ftp.cpanel.net/pub/CPAN/
1607
1608=item *
1609
1610New York
1611
1612 ftp://ftp.freesoftware.com/pub/perl/CPAN/
1613 http://www.deao.net/mirrors/CPAN/
1614 ftp://ftp.deao.net/pub/CPAN/
1615 ftp://ftp.stealth.net/pub/mirrors/ftp.cpan.org/pub/CPAN/
1616 http://mirror.nyc.anidea.com/CPAN/
1617 ftp://mirror.nyc.anidea.com/pub/CPAN/
1618 http://www.rge.com/pub/languages/perl/
1619 ftp://ftp.rge.com/pub/languages/perl/
1620 ftp://mirrors.cloud9.net/pub/mirrors/CPAN/
1621
1622=item *
1623
1624North Carolina
1625
1626 ftp://ftp.duke.edu/pub/perl/
1627
1628=item *
1629
1630Ohio
1631
1632 ftp://ftp.loaded.net/pub/CPAN/
1633
1634=item *
1635
1636Oklahoma
1637
1638 ftp://ftp.ou.edu/mirrors/CPAN/
1639
1640=item *
1641
1642Oregon
1643
1644 ftp://ftp.orst.edu/pub/packages/CPAN/
1645
1646=item *
1647
1648Pennsylvania
1649
1650 http://ftp.epix.net/CPAN/
1651 ftp://ftp.epix.net/pub/languages/perl/
1652 ftp://carroll.cac.psu.edu/pub/CPAN/
1653
1654=item *
1655
1656Tennessee
1657
1658 ftp://ftp.sunsite.utk.edu/pub/CPAN/
1659
1660=item *
1661
1662Texas
1663
1664 http://ftp.sedl.org/pub/mirrors/CPAN/
1665 http://jhcloos.com/pub/mirror/CPAN/
1666 ftp://jhcloos.com/pub/mirror/CPAN/
1667
1668=item *
1669
1670Utah
1671
1672 ftp://mirror.xmission.com/CPAN/
1673
1674=item *
1675
1676Virginia
1677
1678 http://mirrors.rcn.net/pub/lang/CPAN/
1679 ftp://mirrors.rcn.net/pub/lang/CPAN/
1680 ftp://ruff.cs.jmu.edu/pub/CPAN/
1681 http://perl.Liquidation.com/CPAN/
1682
1683=item *
1684
1685Washington
1686
1687 http://cpan.llarian.net/
1688 ftp://cpan.llarian.net/pub/CPAN/
1689 ftp://ftp-mirror.internap.com/pub/CPAN/
1690 ftp://ftp.spu.edu/pub/CPAN/
1691
1692=back
1693
1694=back
1695
1696=head2 Oceania
1697
1698=over 4
1699
1700=item *
1701
1702Australia
1703
1704 http://ftp.planetmirror.com/pub/CPAN/
1705 ftp://ftp.planetmirror.com/pub/CPAN/
1706 ftp://mirror.aarnet.edu.au/pub/perl/CPAN/
1707 ftp://cpan.topend.com.au/pub/CPAN/
1708
1709=item *
1710
1711New Zealand
1712
1713 ftp://ftp.auckland.ac.nz/pub/perl/CPAN/
1714
1715=back
1716
1717=head2 South America
1718
1719=over 4
1720
1721=item *
1722
1723Argentina
1724
1725 ftp://mirrors.bannerlandia.com.ar/mirrors/CPAN/
1726
1727=item *
1728
1729Brazil
1730
1731 ftp://cpan.pop-mg.com.br/pub/CPAN/
1732 ftp://ftp.matrix.com.br/pub/perl/
1733 ftp://cpan.if.usp.br/pub/mirror/CPAN/
1734
1735=item *
1736
1737Chile
1738
1739 ftp://ftp.psinet.cl/pub/programming/perl/CPAN/
1740 ftp://sunsite.dcc.uchile.cl/pub/lang/perl/
f102b883 1741
1742=back
1743
1744For an up-to-date listing of CPAN sites,
4e860d0a 1745see http://www.cpan.org/SITES or ftp://www.cpan.org/SITES .
f102b883 1746
1747=head1 Modules: Creation, Use, and Abuse
1748
1749(The following section is borrowed directly from Tim Bunce's modules
1750file, available at your nearest CPAN site.)
1751
1752Perl implements a class using a package, but the presence of a
1753package doesn't imply the presence of a class. A package is just a
1754namespace. A class is a package that provides subroutines that can be
1755used as methods. A method is just a subroutine that expects, as its
1756first argument, either the name of a package (for "static" methods),
1757or a reference to something (for "virtual" methods).
1758
1759A module is a file that (by convention) provides a class of the same
1760name (sans the .pm), plus an import method in that class that can be
1761called to fetch exported symbols. This module may implement some of
1762its methods by loading dynamic C or C++ objects, but that should be
1763totally transparent to the user of the module. Likewise, the module
1764might set up an AUTOLOAD function to slurp in subroutine definitions on
1765demand, but this is also transparent. Only the F<.pm> file is required to
2e1d04bc 1766exist. See L<perlsub>, L<perltoot>, and L<AutoLoader> for details about
f102b883 1767the AUTOLOAD mechanism.
1768
1769=head2 Guidelines for Module Creation
1770
1771=over 4
1772
4e860d0a 1773=item *
1774
1775Do similar modules already exist in some form?
f102b883 1776
1777If so, please try to reuse the existing modules either in whole or
1778by inheriting useful features into a new class. If this is not
1779practical try to get together with the module authors to work on
1780extending or enhancing the functionality of the existing modules.
1781A perfect example is the plethora of packages in perl4 for dealing
1782with command line options.
1783
1784If you are writing a module to expand an already existing set of
1785modules, please coordinate with the author of the package. It
1786helps if you follow the same naming scheme and module interaction
1787scheme as the original author.
1788
4e860d0a 1789=item *
1790
1791Try to design the new module to be easy to extend and reuse.
f102b883 1792
9f1b1f2d 1793Try to C<use warnings;> (or C<use warnings qw(...);>).
1794Remember that you can add C<no warnings qw(...);> to individual blocks
2e1d04bc 1795of code that need less warnings.
19799a22 1796
f102b883 1797Use blessed references. Use the two argument form of bless to bless
1798into the class name given as the first parameter of the constructor,
1799e.g.,:
1800
1801 sub new {
2e1d04bc 1802 my $class = shift;
1803 return bless {}, $class;
f102b883 1804 }
1805
1806or even this if you'd like it to be used as either a static
1807or a virtual method.
1808
1809 sub new {
2e1d04bc 1810 my $self = shift;
1811 my $class = ref($self) || $self;
1812 return bless {}, $class;
f102b883 1813 }
1814
1815Pass arrays as references so more parameters can be added later
1816(it's also faster). Convert functions into methods where
1817appropriate. Split large methods into smaller more flexible ones.
1818Inherit methods from other modules if appropriate.
1819
1820Avoid class name tests like: C<die "Invalid" unless ref $ref eq 'FOO'>.
19799a22 1821Generally you can delete the C<eq 'FOO'> part with no harm at all.
f102b883 1822Let the objects look after themselves! Generally, avoid hard-wired
1823class names as far as possible.
1824
c47ff5f1 1825Avoid C<< $r->Class::func() >> where using C<@ISA=qw(... Class ...)> and
1826C<< $r->func() >> would work (see L<perlbot> for more details).
f102b883 1827
1828Use autosplit so little used or newly added functions won't be a
5a964f20 1829burden to programs that don't use them. Add test functions to
f102b883 1830the module after __END__ either using AutoSplit or by saying:
1831
1832 eval join('',<main::DATA>) || die $@ unless caller();
1833
1834Does your module pass the 'empty subclass' test? If you say
19799a22 1835C<@SUBCLASS::ISA = qw(YOURCLASS);> your applications should be able
f102b883 1836to use SUBCLASS in exactly the same way as YOURCLASS. For example,
1837does your application still work if you change: C<$obj = new YOURCLASS;>
1838into: C<$obj = new SUBCLASS;> ?
1839
1840Avoid keeping any state information in your packages. It makes it
1841difficult for multiple other packages to use yours. Keep state
1842information in objects.
1843
2e1d04bc 1844Always use B<-w>.
19799a22 1845
1846Try to C<use strict;> (or C<use strict qw(...);>).
f102b883 1847Remember that you can add C<no strict qw(...);> to individual blocks
2e1d04bc 1848of code that need less strictness.
19799a22 1849
2e1d04bc 1850Always use B<-w>.
19799a22 1851
f102b883 1852Follow the guidelines in the perlstyle(1) manual.
1853
19799a22 1854Always use B<-w>.
1855
4e860d0a 1856=item *
1857
1858Some simple style guidelines
f102b883 1859
5a964f20 1860The perlstyle manual supplied with Perl has many helpful points.
f102b883 1861
1862Coding style is a matter of personal taste. Many people evolve their
1863style over several years as they learn what helps them write and
1864maintain good code. Here's one set of assorted suggestions that
1865seem to be widely used by experienced developers:
1866
1867Use underscores to separate words. It is generally easier to read
1868$var_names_like_this than $VarNamesLikeThis, especially for
1869non-native speakers of English. It's also a simple rule that works
1870consistently with VAR_NAMES_LIKE_THIS.
1871
1872Package/Module names are an exception to this rule. Perl informally
1873reserves lowercase module names for 'pragma' modules like integer
1874and strict. Other modules normally begin with a capital letter and
1875use mixed case with no underscores (need to be short and portable).
1876
1877You may find it helpful to use letter case to indicate the scope
1878or nature of a variable. For example:
1879
5a964f20 1880 $ALL_CAPS_HERE constants only (beware clashes with Perl vars)
f102b883 1881 $Some_Caps_Here package-wide global/static
1882 $no_caps_here function scope my() or local() variables
1883
1884Function and method names seem to work best as all lowercase.
c47ff5f1 1885e.g., C<< $obj->as_string() >>.
f102b883 1886
1887You can use a leading underscore to indicate that a variable or
1888function should not be used outside the package that defined it.
1889
4e860d0a 1890=item *
1891
1892Select what to export.
f102b883 1893
1894Do NOT export method names!
1895
1896Do NOT export anything else by default without a good reason!
1897
1898Exports pollute the namespace of the module user. If you must
1899export try to use @EXPORT_OK in preference to @EXPORT and avoid
1900short or common names to reduce the risk of name clashes.
1901
1902Generally anything not exported is still accessible from outside the
c47ff5f1 1903module using the ModuleName::item_name (or C<< $blessed_ref->method >>)
f102b883 1904syntax. By convention you can use a leading underscore on names to
1905indicate informally that they are 'internal' and not for public use.
1906
1907(It is actually possible to get private functions by saying:
1908C<my $subref = sub { ... }; &$subref;>. But there's no way to call that
1909directly as a method, because a method must have a name in the symbol
1910table.)
1911
1912As a general rule, if the module is trying to be object oriented
1913then export nothing. If it's just a collection of functions then
1914@EXPORT_OK anything but use @EXPORT with caution.
1915
4e860d0a 1916=item *
1917
1918Select a name for the module.
f102b883 1919
1920This name should be as descriptive, accurate, and complete as
1921possible. Avoid any risk of ambiguity. Always try to use two or
1922more whole words. Generally the name should reflect what is special
1923about what the module does rather than how it does it. Please use
1924nested module names to group informally or categorize a module.
1925There should be a very good reason for a module not to have a nested name.
1926Module names should begin with a capital letter.
1927
1928Having 57 modules all called Sort will not make life easy for anyone
1929(though having 23 called Sort::Quick is only marginally better :-).
1930Imagine someone trying to install your module alongside many others.
1931If in any doubt ask for suggestions in comp.lang.perl.misc.
1932
1933If you are developing a suite of related modules/classes it's good
1934practice to use nested classes with a common prefix as this will
1935avoid namespace clashes. For example: Xyz::Control, Xyz::View,
1936Xyz::Model etc. Use the modules in this list as a naming guide.
1937
1938If adding a new module to a set, follow the original author's
1939standards for naming modules and the interface to methods in
1940those modules.
1941
165c0277 1942If developing modules for private internal or project specific use,
1943that will never be released to the public, then you should ensure
1944that their names will not clash with any future public module. You
1945can do this either by using the reserved Local::* category or by
1946using a category name that includes an underscore like Foo_Corp::*.
1947
f102b883 1948To be portable each component of a module name should be limited to
194911 characters. If it might be used on MS-DOS then try to ensure each is
1950unique in the first 8 characters. Nested modules make this easier.
1951
4e860d0a 1952=item *
1953
1954Have you got it right?
f102b883 1955
1956How do you know that you've made the right decisions? Have you
1957picked an interface design that will cause problems later? Have
1958you picked the most appropriate name? Do you have any questions?
1959
1960The best way to know for sure, and pick up many helpful suggestions,
1961is to ask someone who knows. Comp.lang.perl.misc is read by just about
1962all the people who develop modules and it's the best place to ask.
1963
1964All you need to do is post a short summary of the module, its
1965purpose and interfaces. A few lines on each of the main methods is
1966probably enough. (If you post the whole module it might be ignored
1967by busy people - generally the very people you want to read it!)
1968
1969Don't worry about posting if you can't say when the module will be
1970ready - just say so in the message. It might be worth inviting
1971others to help you, they may be able to complete it for you!
1972
4e860d0a 1973=item *
1974
1975README and other Additional Files.
f102b883 1976
1977It's well known that software developers usually fully document the
1978software they write. If, however, the world is in urgent need of
1979your software and there is not enough time to write the full
1980documentation please at least provide a README file containing:
1981
1982=over 10
1983
1984=item *
4e860d0a 1985
f102b883 1986A description of the module/package/extension etc.
1987
1988=item *
4e860d0a 1989
f102b883 1990A copyright notice - see below.
1991
1992=item *
4e860d0a 1993
f102b883 1994Prerequisites - what else you may need to have.
1995
1996=item *
4e860d0a 1997
f102b883 1998How to build it - possible changes to Makefile.PL etc.
1999
2000=item *
4e860d0a 2001
f102b883 2002How to install it.
2003
2004=item *
4e860d0a 2005
f102b883 2006Recent changes in this release, especially incompatibilities
2007
2008=item *
4e860d0a 2009
f102b883 2010Changes / enhancements you plan to make in the future.
2011
2012=back
2013
2014If the README file seems to be getting too large you may wish to
2015split out some of the sections into separate files: INSTALL,
2016Copying, ToDo etc.
2017
2018=over 4
2019
2020=item Adding a Copyright Notice.
2021
4e860d0a 2022
f102b883 2023How you choose to license your work is a personal decision.
2024The general mechanism is to assert your Copyright and then make
2025a declaration of how others may copy/use/modify your work.
2026
2027Perl, for example, is supplied with two types of licence: The GNU
2028GPL and The Artistic Licence (see the files README, Copying, and
2029Artistic). Larry has good reasons for NOT just using the GNU GPL.
2030
2031My personal recommendation, out of respect for Larry, Perl, and the
5a964f20 2032Perl community at large is to state something simply like:
f102b883 2033
2034 Copyright (c) 1995 Your Name. All rights reserved.
2035 This program is free software; you can redistribute it and/or
2036 modify it under the same terms as Perl itself.
2037
2038This statement should at least appear in the README file. You may
2039also wish to include it in a Copying file and your source files.
2040Remember to include the other words in addition to the Copyright.
2041
4e860d0a 2042=item *
2043
2044Give the module a version/issue/release number.
f102b883 2045
2046To be fully compatible with the Exporter and MakeMaker modules you
2047should store your module's version number in a non-my package
2048variable called $VERSION. This should be a floating point
2049number with at least two digits after the decimal (i.e., hundredths,
2050e.g, C<$VERSION = "0.01">). Don't use a "1.3.2" style version.
19799a22 2051See L<Exporter> for details.
f102b883 2052
2053It may be handy to add a function or method to retrieve the number.
2054Use the number in announcements and archive file names when
2055releasing the module (ModuleName-1.02.tar.Z).
2056See perldoc ExtUtils::MakeMaker.pm for details.
2057
4e860d0a 2058=item *
2059
2060How to release and distribute a module.
f102b883 2061
2062It's good idea to post an announcement of the availability of your
2063module (or the module itself if small) to the comp.lang.perl.announce
2064Usenet newsgroup. This will at least ensure very wide once-off
2065distribution.
2066
2e1d04bc 2067If possible, register the module with CPAN. You should
f102b883 2068include details of its location in your announcement.
2069
2070Some notes about ftp archives: Please use a long descriptive file
5a964f20 2071name that includes the version number. Most incoming directories
f102b883 2072will not be readable/listable, i.e., you won't be able to see your
2073file after uploading it. Remember to send your email notification
2074message as soon as possible after uploading else your file may get
2075deleted automatically. Allow time for the file to be processed
2076and/or check the file has been processed before announcing its
2077location.
2078
2079FTP Archives for Perl Modules:
2080
6cecdcac 2081Follow the instructions and links on:
f102b883 2082
4e860d0a 2083 http://www.cpan.org/modules/00modlist.long.html
2084 http://www.cpan.org/modules/04pause.html
f102b883 2085
2086or upload to one of these sites:
2087
6cecdcac 2088 https://pause.kbx.de/pause/
2089 http://pause.perl.org/pause/
f102b883 2090
6cecdcac 2091and notify <modules@perl.org>.
f102b883 2092
2093By using the WWW interface you can ask the Upload Server to mirror
2094your modules from your ftp or WWW site into your own directory on
2095CPAN!
2096
2097Please remember to send me an updated entry for the Module list!
2098
4e860d0a 2099=item *
2100
2101Take care when changing a released module.
f102b883 2102
7b8d334a 2103Always strive to remain compatible with previous released versions.
2104Otherwise try to add a mechanism to revert to the
19799a22 2105old behavior if people rely on it. Document incompatible changes.
f102b883 2106
2107=back
2108
2109=back
2110
2111=head2 Guidelines for Converting Perl 4 Library Scripts into Modules
2112
2113=over 4
2114
4e860d0a 2115=item *
2116
2117There is no requirement to convert anything.
f102b883 2118
2119If it ain't broke, don't fix it! Perl 4 library scripts should
2120continue to work with no problems. You may need to make some minor
2121changes (like escaping non-array @'s in double quoted strings) but
2122there is no need to convert a .pl file into a Module for just that.
2123
4e860d0a 2124=item *
2125
2126Consider the implications.
f102b883 2127
5a964f20 2128All Perl applications that make use of the script will need to
f102b883 2129be changed (slightly) if the script is converted into a module. Is
2130it worth it unless you plan to make other changes at the same time?
2131
4e860d0a 2132=item *
2133
2134Make the most of the opportunity.
f102b883 2135
2136If you are going to convert the script to a module you can use the
19799a22 2137opportunity to redesign the interface. The guidelines for module
2138creation above include many of the issues you should consider.
f102b883 2139
4e860d0a 2140=item *
2141
2142The pl2pm utility will get you started.
f102b883 2143
2144This utility will read *.pl files (given as parameters) and write
2145corresponding *.pm files. The pl2pm utilities does the following:
2146
2147=over 10
2148
2149=item *
4e860d0a 2150
f102b883 2151Adds the standard Module prologue lines
2152
2153=item *
4e860d0a 2154
f102b883 2155Converts package specifiers from ' to ::
2156
2157=item *
4e860d0a 2158
f102b883 2159Converts die(...) to croak(...)
2160
2161=item *
4e860d0a 2162
f102b883 2163Several other minor changes
2164
2165=back
2166
2167Being a mechanical process pl2pm is not bullet proof. The converted
2168code will need careful checking, especially any package statements.
2169Don't delete the original .pl file till the new .pm one works!
2170
2171=back
2172
2173=head2 Guidelines for Reusing Application Code
2174
2175=over 4
2176
4e860d0a 2177=item *
551e1d92 2178
2179Complete applications rarely belong in the Perl Module Library.
f102b883 2180
4e860d0a 2181=item *
551e1d92 2182
2183Many applications contain some Perl code that could be reused.
f102b883 2184
2185Help save the world! Share your code in a form that makes it easy
2186to reuse.
2187
4e860d0a 2188=item *
551e1d92 2189
2190Break-out the reusable code into one or more separate module files.
f102b883 2191
4e860d0a 2192=item *
551e1d92 2193
2194Take the opportunity to reconsider and redesign the interfaces.
2195
4e860d0a 2196=item *
f102b883 2197
551e1d92 2198In some cases the 'application' can then be reduced to a small
f102b883 2199
2200fragment of code built on top of the reusable modules. In these cases
2201the application could invoked as:
2202
5a964f20 2203 % perl -e 'use Module::Name; method(@ARGV)' ...
f102b883 2204or
5a964f20 2205 % perl -mModule::Name ... (in perl5.002 or higher)
f102b883 2206
2207=back
2208
2209=head1 NOTE
2210
2211Perl does not enforce private and public parts of its modules as you may
2212have been used to in other languages like C++, Ada, or Modula-17. Perl
2213doesn't have an infatuation with enforced privacy. It would prefer
2214that you stayed out of its living room because you weren't invited, not
2215because it has a shotgun.
2216
2217The module and its user have a contract, part of which is common law,
2218and part of which is "written". Part of the common law contract is
2219that a module doesn't pollute any namespace it wasn't asked to. The
2220written contract for the module (A.K.A. documentation) may make other
2221provisions. But then you know when you C<use RedefineTheWorld> that
2222you're redefining the world and willing to take the consequences.