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