source: for-distributions/trunk/bin/windows/perl/lib/Pod/perlmodlib.pod@ 14489

Last change on this file since 14489 was 14489, checked in by oranfry, 17 years ago

upgrading to perl 5.8

File size: 64.8 KB
Line 
1=for maintainers
2Generated by perlmodlib.PL -- DO NOT EDIT!
3
4=head1 NAME
5
6perlmodlib - constructing new Perl modules and finding existing ones
7
8=head1 THE PERL MODULE LIBRARY
9
10Many modules are included in the Perl distribution. These are described
11below, and all end in F<.pm>. You may discover compiled library
12files (usually ending in F<.so>) or small pieces of modules to be
13autoloaded (ending in F<.al>); these were automatically generated
14by the installation process. You may also discover files in the
15library directory that end in either F<.pl> or F<.ph>. These are
16old libraries supplied so that old programs that use them still
17run. The F<.pl> files will all eventually be converted into standard
18modules, and the F<.ph> files made by B<h2ph> will probably end up
19as extension modules made by B<h2xs>. (Some F<.ph> values may
20already be available through the POSIX, Errno, or Fcntl modules.)
21The B<pl2pm> file in the distribution may help in your conversion,
22but it's just a mechanical process and therefore far from bulletproof.
23
24=head2 Pragmatic Modules
25
26They work somewhat like compiler directives (pragmata) in that they
27tend to affect the compilation of your program, and thus will usually
28work well only when used within a C<use>, or C<no>. Most of these
29are lexically scoped, so an inner BLOCK may countermand them
30by saying:
31
32 no integer;
33 no strict 'refs';
34 no warnings;
35
36which lasts until the end of that BLOCK.
37
38Some pragmas are lexically scoped--typically those that affect the
39C<$^H> hints variable. Others affect the current package instead,
40like C<use vars> and C<use subs>, which allow you to predeclare a
41variables or subroutines within a particular I<file> rather than
42just a block. Such declarations are effective for the entire file
43for which they were declared. You cannot rescind them with C<no
44vars> or C<no subs>.
45
46The following pragmas are defined (and have their own documentation).
47
48=over 12
49
50=item attributes
51
52Get/set subroutine or variable attributes
53
54=item attrs
55
56Set/get attributes of a subroutine (deprecated)
57
58=item autouse
59
60Postpone load of modules until a function is used
61
62=item base
63
64Establish IS-A relationship with base classes at compile time
65
66=item bigint
67
68Transparent BigInteger support for Perl
69
70=item bignum
71
72Transparent BigNumber support for Perl
73
74=item bigrat
75
76Transparent BigNumber/BigRational support for Perl
77
78=item blib
79
80Use MakeMaker's uninstalled version of a package
81
82=item bytes
83
84Force byte semantics rather than character semantics
85
86=item charnames
87
88Define character names for C<\N{named}> string literal escapes
89
90=item constant
91
92Declare constants
93
94=item diagnostics
95
96Produce verbose warning diagnostics
97
98=item encoding
99
100Allows you to write your script in non-ascii or non-utf8
101
102=item fields
103
104Compile-time class fields
105
106=item filetest
107
108Control the filetest permission operators
109
110=item if
111
112C<use> a Perl module if a condition holds
113
114=item integer
115
116Use integer arithmetic instead of floating point
117
118=item less
119
120Request less of something from the compiler
121
122=item lib
123
124Manipulate @INC at compile time
125
126=item locale
127
128Use and avoid POSIX locales for built-in operations
129
130=item open
131
132Set default PerlIO layers for input and output
133
134=item ops
135
136Restrict unsafe operations when compiling
137
138=item overload
139
140Package for overloading Perl operations
141
142=item re
143
144Alter regular expression behaviour
145
146=item sigtrap
147
148Enable simple signal handling
149
150=item sort
151
152Control sort() behaviour
153
154=item strict
155
156Restrict unsafe constructs
157
158=item subs
159
160Predeclare sub names
161
162=item threads
163
164Perl extension allowing use of interpreter based threads from perl
165
166=item threads::shared
167
168Perl extension for sharing data structures between threads
169
170=item utf8
171
172Enable/disable UTF-8 (or UTF-EBCDIC) in source code
173
174=item vars
175
176Predeclare global variable names (obsolete)
177
178=item vmsish
179
180Control VMS-specific language features
181
182=item warnings
183
184Control optional warnings
185
186=item warnings::register
187
188Warnings import function
189
190=back
191
192=head2 Standard Modules
193
194Standard, bundled modules are all expected to behave in a well-defined
195manner with respect to namespace pollution because they use the
196Exporter module. See their own documentation for details.
197
198It's possible that not all modules listed below are installed on your
199system. For example, the GDBM_File module will not be installed if you
200don't have the gdbm library.
201
202=over 12
203
204=item AnyDBM_File
205
206Provide framework for multiple DBMs
207
208=item Attribute::Handlers
209
210Simpler definition of attribute handlers
211
212=item AutoLoader
213
214Load subroutines only on demand
215
216=item AutoSplit
217
218Split a package for autoloading
219
220=item B
221
222The Perl Compiler
223
224=item B::Asmdata
225
226Autogenerated data about Perl ops, used to generate bytecode
227
228=item B::Assembler
229
230Assemble Perl bytecode
231
232=item B::Bblock
233
234Walk basic blocks
235
236=item B::Bytecode
237
238Perl compiler's bytecode backend
239
240=item B::C
241
242Perl compiler's C backend
243
244=item B::CC
245
246Perl compiler's optimized C translation backend
247
248=item B::Concise
249
250Walk Perl syntax tree, printing concise info about ops
251
252=item B::Debug
253
254Walk Perl syntax tree, printing debug info about ops
255
256=item B::Deparse
257
258Perl compiler backend to produce perl code
259
260=item B::Disassembler
261
262Disassemble Perl bytecode
263
264=item B::Lint
265
266Perl lint
267
268=item B::Showlex
269
270Show lexical variables used in functions or files
271
272=item B::Stackobj
273
274Helper module for CC backend
275
276=item B::Stash
277
278Show what stashes are loaded
279
280=item B::Terse
281
282Walk Perl syntax tree, printing terse info about ops
283
284=item B::Xref
285
286Generates cross reference reports for Perl programs
287
288=item Benchmark
289
290Benchmark running times of Perl code
291
292=item ByteLoader
293
294Load byte compiled perl code
295
296=item CGI
297
298Simple Common Gateway Interface Class
299
300=item CGI::Apache
301
302Backward compatibility module for CGI.pm
303
304=item CGI::Carp
305
306CGI routines for writing to the HTTPD (or other) error log
307
308=item CGI::Cookie
309
310Interface to Netscape Cookies
311
312=item CGI::Fast
313
314CGI Interface for Fast CGI
315
316=item CGI::Pretty
317
318Module to produce nicely formatted HTML code
319
320=item CGI::Push
321
322Simple Interface to Server Push
323
324=item CGI::Switch
325
326Backward compatibility module for defunct CGI::Switch
327
328=item CGI::Util
329
330Internal utilities used by CGI module
331
332=item CPAN
333
334Query, download and build perl modules from CPAN sites
335
336=item CPAN::FirstTime
337
338Utility for CPAN::Config file Initialization
339
340=item CPAN::Nox
341
342Wrapper around CPAN.pm without using any XS module
343
344=item CPAN::Version
345
346Utility functions to compare CPAN versions
347
348=item Carp
349
350Warn of errors (from perspective of caller)
351
352=item Carp::Heavy
353
354Heavy machinery, no user serviceable parts inside
355
356=item Class::ISA
357
358Report the search path for a class's ISA tree
359
360=item Class::Struct
361
362Declare struct-like datatypes as Perl classes
363
364=item Config
365
366Access Perl configuration information
367
368=item Cwd
369
370Get pathname of current working directory
371
372=item DB
373
374Programmatic interface to the Perl debugging API (draft, subject to
375
376=item DBM_Filter
377
378Filter DBM keys/values
379
380=item DB_File
381
382Perl5 access to Berkeley DB version 1.x
383
384=item Data::Dumper
385
386Stringified perl data structures, suitable for both printing and C<eval>
387
388=item Devel::DProf
389
390A Perl code profiler
391
392=item Devel::PPPort
393
394Perl/Pollution/Portability
395
396=item Devel::Peek
397
398A data debugging tool for the XS programmer
399
400=item Devel::SelfStubber
401
402Generate stubs for a SelfLoading module
403
404=item Digest
405
406Modules that calculate message digests
407
408=item Digest::MD5
409
410Perl interface to the MD5 Algorithm
411
412=item Digest::base
413
414Digest base class
415
416=item Digest::file
417
418Calculate digests of files
419
420=item DirHandle
421
422Supply object methods for directory handles
423
424=item Dumpvalue
425
426Provides screen dump of Perl data.
427
428=item DynaLoader
429
430Dynamically load C libraries into Perl code
431
432=item Encode
433
434Character encodings
435
436=item Encode::Alias
437
438Alias definitions to encodings
439
440=item Encode::Byte
441
442Single Byte Encodings
443
444=item Encode::CJKConstants
445
446Internally used by Encode::??::ISO_2022_*
447
448=item Encode::CN
449
450China-based Chinese Encodings
451
452=item Encode::CN::HZ
453
454Internally used by Encode::CN
455
456=item Encode::Config
457
458Internally used by Encode
459
460=item Encode::EBCDIC
461
462EBCDIC Encodings
463
464=item Encode::Encoder
465
466Object Oriented Encoder
467
468=item Encode::Encoding
469
470Encode Implementation Base Class
471
472=item Encode::Guess
473
474Guesses encoding from data
475
476=item Encode::JP
477
478Japanese Encodings
479
480=item Encode::JP::H2Z
481
482Internally used by Encode::JP::2022_JP*
483
484=item Encode::JP::JIS7
485
486Internally used by Encode::JP
487
488=item Encode::KR
489
490Korean Encodings
491
492=item Encode::KR::2022_KR
493
494Internally used by Encode::KR
495
496=item Encode::MIME::Header
497
498MIME 'B' and 'Q' header encoding
499
500=item Encode::PerlIO
501
502A detailed document on Encode and PerlIO
503
504=item Encode::Supported
505
506Encodings supported by Encode
507
508=item Encode::Symbol
509
510Symbol Encodings
511
512=item Encode::TW
513
514Taiwan-based Chinese Encodings
515
516=item Encode::Unicode
517
518Various Unicode Transformation Formats
519
520=item Encode::Unicode::UTF7
521
522UTF-7 encoding
523
524=item English
525
526Use nice English (or awk) names for ugly punctuation variables
527
528=item Env
529
530Perl module that imports environment variables as scalars or arrays
531
532=item Errno
533
534System errno constants
535
536=item Exporter
537
538Implements default import method for modules
539
540=item Exporter::Heavy
541
542Exporter guts
543
544=item ExtUtils::Command
545
546Utilities to replace common UNIX commands in Makefiles etc.
547
548=item ExtUtils::Command::MM
549
550Commands for the MM's to use in Makefiles
551
552=item ExtUtils::Constant
553
554Generate XS code to import C header constants
555
556=item ExtUtils::Constant::Base
557
558Base class for ExtUtils::Constant objects
559
560=item ExtUtils::Constant::Utils
561
562Helper functions for ExtUtils::Constant
563
564=item ExtUtils::Constant::XS
565
566Base class for ExtUtils::Constant objects
567
568=item ExtUtils::Embed
569
570Utilities for embedding Perl in C/C++ applications
571
572=item ExtUtils::Install
573
574Install files from here to there
575
576=item ExtUtils::Installed
577
578Inventory management of installed modules
579
580=item ExtUtils::Liblist
581
582Determine libraries to use and how to use them
583
584=item ExtUtils::MM
585
586OS adjusted ExtUtils::MakeMaker subclass
587
588=item ExtUtils::MM_AIX
589
590AIX specific subclass of ExtUtils::MM_Unix
591
592=item ExtUtils::MM_Any
593
594Platform-agnostic MM methods
595
596=item ExtUtils::MM_BeOS
597
598Methods to override UN*X behaviour in ExtUtils::MakeMaker
599
600=item ExtUtils::MM_Cygwin
601
602Methods to override UN*X behaviour in ExtUtils::MakeMaker
603
604=item ExtUtils::MM_DOS
605
606DOS specific subclass of ExtUtils::MM_Unix
607
608=item ExtUtils::MM_MacOS
609
610Once produced Makefiles for MacOS Classic
611
612=item ExtUtils::MM_NW5
613
614Methods to override UN*X behaviour in ExtUtils::MakeMaker
615
616=item ExtUtils::MM_OS2
617
618Methods to override UN*X behaviour in ExtUtils::MakeMaker
619
620=item ExtUtils::MM_QNX
621
622QNX specific subclass of ExtUtils::MM_Unix
623
624=item ExtUtils::MM_UWIN
625
626U/WIN specific subclass of ExtUtils::MM_Unix
627
628=item ExtUtils::MM_Unix
629
630Methods used by ExtUtils::MakeMaker
631
632=item ExtUtils::MM_VMS
633
634Methods to override UN*X behaviour in ExtUtils::MakeMaker
635
636=item ExtUtils::MM_VOS
637
638VOS specific subclass of ExtUtils::MM_Unix
639
640=item ExtUtils::MM_Win32
641
642Methods to override UN*X behaviour in ExtUtils::MakeMaker
643
644=item ExtUtils::MM_Win95
645
646Method to customize MakeMaker for Win9X
647
648=item ExtUtils::MY
649
650ExtUtils::MakeMaker subclass for customization
651
652=item ExtUtils::MakeMaker
653
654Create a module Makefile
655
656=item ExtUtils::MakeMaker::Config
657
658Wrapper around Config.pm
659
660=item ExtUtils::MakeMaker::FAQ
661
662Frequently Asked Questions About MakeMaker
663
664=item ExtUtils::MakeMaker::Tutorial
665
666Writing a module with MakeMaker
667
668=item ExtUtils::MakeMaker::bytes
669
670Version-agnostic bytes.pm
671
672=item ExtUtils::MakeMaker::vmsish
673
674Platform-agnostic vmsish.pm
675
676=item ExtUtils::Manifest
677
678Utilities to write and check a MANIFEST file
679
680=item ExtUtils::Mkbootstrap
681
682Make a bootstrap file for use by DynaLoader
683
684=item ExtUtils::Mksymlists
685
686Write linker options files for dynamic extension
687
688=item ExtUtils::Packlist
689
690Manage .packlist files
691
692=item ExtUtils::testlib
693
694Add blib/* directories to @INC
695
696=item Fatal
697
698Replace functions with equivalents which succeed or die
699
700=item Fcntl
701
702Load the C Fcntl.h defines
703
704=item File::Basename
705
706Parse file paths into directory, filename and suffix.
707
708=item File::CheckTree
709
710Run many filetest checks on a tree
711
712=item File::Compare
713
714Compare files or filehandles
715
716=item File::Copy
717
718Copy files or filehandles
719
720=item File::DosGlob
721
722DOS like globbing and then some
723
724=item File::Find
725
726Traverse a directory tree.
727
728=item File::Glob
729
730Perl extension for BSD glob routine
731
732=item File::Path
733
734Create or remove directory trees
735
736=item File::Spec
737
738Portably perform operations on file names
739
740=item File::Spec::Cygwin
741
742Methods for Cygwin file specs
743
744=item File::Spec::Epoc
745
746Methods for Epoc file specs
747
748=item File::Spec::Functions
749
750Portably perform operations on file names
751
752=item File::Spec::Mac
753
754File::Spec for Mac OS (Classic)
755
756=item File::Spec::OS2
757
758Methods for OS/2 file specs
759
760=item File::Spec::Unix
761
762File::Spec for Unix, base for other File::Spec modules
763
764=item File::Spec::VMS
765
766Methods for VMS file specs
767
768=item File::Spec::Win32
769
770Methods for Win32 file specs
771
772=item File::Temp
773
774Return name and handle of a temporary file safely
775
776=item File::stat
777
778By-name interface to Perl's built-in stat() functions
779
780=item FileCache
781
782Keep more files open than the system permits
783
784=item FileHandle
785
786Supply object methods for filehandles
787
788=item Filter::Simple
789
790Simplified source filtering
791
792=item Filter::Util::Call
793
794Perl Source Filter Utility Module
795
796=item FindBin
797
798Locate directory of original perl script
799
800=item GDBM_File
801
802Perl5 access to the gdbm library.
803
804=item Getopt::Long
805
806Extended processing of command line options
807
808=item Getopt::Std
809
810Process single-character switches with switch clustering
811
812=item Hash::Util
813
814A selection of general-utility hash subroutines
815
816=item I18N::Collate
817
818Compare 8-bit scalar data according to the current locale
819
820=item I18N::LangTags
821
822Functions for dealing with RFC3066-style language tags
823
824=item I18N::LangTags::Detect
825
826Detect the user's language preferences
827
828=item I18N::LangTags::List
829
830Tags and names for human languages
831
832=item I18N::Langinfo
833
834Query locale information
835
836=item IO
837
838Load various IO modules
839
840=item IO::Dir
841
842Supply object methods for directory handles
843
844=item IO::File
845
846Supply object methods for filehandles
847
848=item IO::Handle
849
850Supply object methods for I/O handles
851
852=item IO::Pipe
853
854Supply object methods for pipes
855
856=item IO::Poll
857
858Object interface to system poll call
859
860=item IO::Seekable
861
862Supply seek based methods for I/O objects
863
864=item IO::Select
865
866OO interface to the select system call
867
868=item IO::Socket
869
870Object interface to socket communications
871
872=item IO::Socket::INET
873
874Object interface for AF_INET domain sockets
875
876=item IO::Socket::UNIX
877
878Object interface for AF_UNIX domain sockets
879
880=item IPC::Open2
881
882Open a process for both reading and writing
883
884=item IPC::Open3
885
886Open a process for reading, writing, and error handling
887
888=item IPC::SysV
889
890SysV IPC constants
891
892=item IPC::SysV::Msg
893
894SysV Msg IPC object class
895
896=item IPC::SysV::Semaphore
897
898SysV Semaphore IPC object class
899
900=item List::Util
901
902A selection of general-utility list subroutines
903
904=item Locale::Constants
905
906Constants for Locale codes
907
908=item Locale::Country
909
910ISO codes for country identification (ISO 3166)
911
912=item Locale::Currency
913
914ISO three letter codes for currency identification (ISO 4217)
915
916=item Locale::Language
917
918ISO two letter codes for language identification (ISO 639)
919
920=item Locale::Maketext
921
922Framework for localization
923
924=item Locale::Maketext::TPJ13
925
926Article about software localization
927
928=item Locale::Script
929
930ISO codes for script identification (ISO 15924)
931
932=item MIME::Base64
933
934Encoding and decoding of base64 strings
935
936=item MIME::Base64::QuotedPrint
937
938Encoding and decoding of quoted-printable strings
939
940=item Math::BigFloat
941
942Arbitrary size floating point math package
943
944=item Math::BigInt
945
946Arbitrary size integer/float math package
947
948=item Math::BigInt::Calc
949
950Pure Perl module to support Math::BigInt
951
952=item Math::BigInt::CalcEmu
953
954Emulate low-level math with BigInt code
955
956=item Math::BigRat
957
958Arbitrary big rational numbers
959
960=item Math::Complex
961
962Complex numbers and associated mathematical functions
963
964=item Math::Trig
965
966Trigonometric functions
967
968=item Memoize
969
970Make functions faster by trading space for time
971
972=item Memoize::AnyDBM_File
973
974Glue to provide EXISTS for AnyDBM_File for Storable use
975
976=item Memoize::Expire
977
978Plug-in module for automatic expiration of memoized values
979
980=item Memoize::ExpireFile
981
982Test for Memoize expiration semantics
983
984=item Memoize::ExpireTest
985
986Test for Memoize expiration semantics
987
988=item Memoize::NDBM_File
989
990Glue to provide EXISTS for NDBM_File for Storable use
991
992=item Memoize::SDBM_File
993
994Glue to provide EXISTS for SDBM_File for Storable use
995
996=item Memoize::Storable
997
998Store Memoized data in Storable database
999
1000=item NDBM_File
1001
1002Tied access to ndbm files
1003
1004=item NEXT
1005
1006Provide a pseudo-class NEXT (et al) that allows method redispatch
1007
1008=item Net::Cmd
1009
1010Network Command class (as used by FTP, SMTP etc)
1011
1012=item Net::Config
1013
1014Local configuration data for libnet
1015
1016=item Net::Domain
1017
1018Attempt to evaluate the current host's internet name and domain
1019
1020=item Net::FTP
1021
1022FTP Client class
1023
1024=item Net::NNTP
1025
1026NNTP Client class
1027
1028=item Net::Netrc
1029
1030OO interface to users netrc file
1031
1032=item Net::POP3
1033
1034Post Office Protocol 3 Client class (RFC1939)
1035
1036=item Net::Ping
1037
1038Check a remote host for reachability
1039
1040=item Net::SMTP
1041
1042Simple Mail Transfer Protocol Client
1043
1044=item Net::Time
1045
1046Time and daytime network client interface
1047
1048=item Net::hostent
1049
1050By-name interface to Perl's built-in gethost*() functions
1051
1052=item Net::libnetFAQ
1053
1054Libnet Frequently Asked Questions
1055
1056=item Net::netent
1057
1058By-name interface to Perl's built-in getnet*() functions
1059
1060=item Net::protoent
1061
1062By-name interface to Perl's built-in getproto*() functions
1063
1064=item Net::servent
1065
1066By-name interface to Perl's built-in getserv*() functions
1067
1068=item O
1069
1070Generic interface to Perl Compiler backends
1071
1072=item ODBM_File
1073
1074Tied access to odbm files
1075
1076=item Opcode
1077
1078Disable named opcodes when compiling perl code
1079
1080=item POSIX
1081
1082Perl interface to IEEE Std 1003.1
1083
1084=item PerlIO
1085
1086On demand loader for PerlIO layers and root of PerlIO::* name space
1087
1088=item PerlIO::encoding
1089
1090Encoding layer
1091
1092=item PerlIO::scalar
1093
1094In-memory IO, scalar IO
1095
1096=item PerlIO::via
1097
1098Helper class for PerlIO layers implemented in perl
1099
1100=item PerlIO::via::QuotedPrint
1101
1102PerlIO layer for quoted-printable strings
1103
1104=item Pod::Checker
1105
1106Check pod documents for syntax errors
1107
1108=item Pod::Find
1109
1110Find POD documents in directory trees
1111
1112=item Pod::Functions
1113
1114Group Perl's functions a la perlfunc.pod
1115
1116=item Pod::Html
1117
1118Module to convert pod files to HTML
1119
1120=item Pod::InputObjects
1121
1122Objects representing POD input paragraphs, commands, etc.
1123
1124=item Pod::LaTeX
1125
1126Convert Pod data to formatted Latex
1127
1128=item Pod::Man
1129
1130Convert POD data to formatted *roff input
1131
1132=item Pod::ParseLink
1133
1134Parse an LE<lt>E<gt> formatting code in POD text
1135
1136=item Pod::ParseUtils
1137
1138Helpers for POD parsing and conversion
1139
1140=item Pod::Parser
1141
1142Base class for creating POD filters and translators
1143
1144=item Pod::Perldoc::ToChecker
1145
1146Let Perldoc check Pod for errors
1147
1148=item Pod::Perldoc::ToMan
1149
1150Let Perldoc render Pod as man pages
1151
1152=item Pod::Perldoc::ToNroff
1153
1154Let Perldoc convert Pod to nroff
1155
1156=item Pod::Perldoc::ToPod
1157
1158Let Perldoc render Pod as ... Pod!
1159
1160=item Pod::Perldoc::ToRtf
1161
1162Let Perldoc render Pod as RTF
1163
1164=item Pod::Perldoc::ToText
1165
1166Let Perldoc render Pod as plaintext
1167
1168=item Pod::Perldoc::ToTk
1169
1170Let Perldoc use Tk::Pod to render Pod
1171
1172=item Pod::Perldoc::ToXml
1173
1174Let Perldoc render Pod as XML
1175
1176=item Pod::PlainText
1177
1178Convert POD data to formatted ASCII text
1179
1180=item Pod::Plainer
1181
1182Perl extension for converting Pod to old style Pod.
1183
1184=item Pod::Select
1185
1186Extract selected sections of POD from input
1187
1188=item Pod::Text
1189
1190Convert POD data to formatted ASCII text
1191
1192=item Pod::Text::Color
1193
1194Convert POD data to formatted color ASCII text
1195
1196=item Pod::Text::Overstrike
1197
1198Convert POD data to formatted overstrike text
1199
1200=item Pod::Text::Termcap
1201
1202Convert POD data to ASCII text with format escapes
1203
1204=item Pod::Usage
1205
1206Print a usage message from embedded pod documentation
1207
1208=item SDBM_File
1209
1210Tied access to sdbm files
1211
1212=item Safe
1213
1214Compile and execute code in restricted compartments
1215
1216=item Scalar::Util
1217
1218A selection of general-utility scalar subroutines
1219
1220=item Search::Dict
1221
1222Search for key in dictionary file
1223
1224=item SelectSaver
1225
1226Save and restore selected file handle
1227
1228=item SelfLoader
1229
1230Load functions only on demand
1231
1232=item Shell
1233
1234Run shell commands transparently within perl
1235
1236=item Socket
1237
1238Load the C socket.h defines and structure manipulators
1239
1240=item Storable
1241
1242Persistence for Perl data structures
1243
1244=item Switch
1245
1246A switch statement for Perl
1247
1248=item Symbol
1249
1250Manipulate Perl symbols and their names
1251
1252=item Sys::Hostname
1253
1254Try every conceivable way to get hostname
1255
1256=item Sys::Syslog
1257
1258Perl interface to the UNIX syslog(3) calls
1259
1260=item Term::ANSIColor
1261
1262Color screen output using ANSI escape sequences
1263
1264=item Term::Cap
1265
1266Perl termcap interface
1267
1268=item Term::Complete
1269
1270Perl word completion module
1271
1272=item Term::ReadLine
1273
1274Perl interface to various C<readline> packages.
1275
1276=item Test
1277
1278Provides a simple framework for writing test scripts
1279
1280=item Test::Builder
1281
1282Backend for building test libraries
1283
1284=item Test::Builder::Module
1285
1286Base class for test modules
1287
1288=item Test::Builder::Tester
1289
1290Test testsuites that have been built with
1291
1292=item Test::Builder::Tester::Color
1293
1294Turn on colour in Test::Builder::Tester
1295
1296=item Test::Harness
1297
1298Run Perl standard test scripts with statistics
1299
1300=item Test::Harness::Assert
1301
1302Simple assert
1303
1304=item Test::Harness::Iterator
1305
1306Internal Test::Harness Iterator
1307
1308=item Test::Harness::Point
1309
1310Object for tracking a single test point
1311
1312=item Test::Harness::Straps
1313
1314Detailed analysis of test results
1315
1316=item Test::Harness::TAP
1317
1318Documentation for the TAP format
1319
1320=item Test::More
1321
1322Yet another framework for writing test scripts
1323
1324=item Test::Simple
1325
1326Basic utilities for writing tests.
1327
1328=item Test::Tutorial
1329
1330A tutorial about writing really basic tests
1331
1332=item Text::Abbrev
1333
1334Create an abbreviation table from a list
1335
1336=item Text::Balanced
1337
1338Extract delimited text sequences from strings.
1339
1340=item Text::ParseWords
1341
1342Parse text into an array of tokens or array of arrays
1343
1344=item Text::Soundex
1345
1346Implementation of the Soundex Algorithm as Described by Knuth
1347
1348=item Text::Tabs
1349
1350Expand and unexpand tabs per the unix expand(1) and unexpand(1)
1351
1352=item Text::Wrap
1353
1354Line wrapping to form simple paragraphs
1355
1356=item Thread
1357
1358Manipulate threads in Perl (for old code only)
1359
1360=item Thread::Queue
1361
1362Thread-safe queues
1363
1364=item Thread::Semaphore
1365
1366Thread-safe semaphores
1367
1368=item Thread::Signal
1369
1370Start a thread which runs signal handlers reliably (for old code)
1371
1372=item Thread::Specific
1373
1374Thread-specific keys
1375
1376=item Tie::Array
1377
1378Base class for tied arrays
1379
1380=item Tie::File
1381
1382Access the lines of a disk file via a Perl array
1383
1384=item Tie::Handle
1385
1386Base class definitions for tied handles
1387
1388=item Tie::Hash
1389
1390Base class definitions for tied hashes
1391
1392=item Tie::Memoize
1393
1394Add data to hash when needed
1395
1396=item Tie::RefHash
1397
1398Use references as hash keys
1399
1400=item Tie::Scalar
1401
1402Base class definitions for tied scalars
1403
1404=item Tie::SubstrHash
1405
1406Fixed-table-size, fixed-key-length hashing
1407
1408=item Time::HiRes
1409
1410High resolution alarm, sleep, gettimeofday, interval timers
1411
1412=item Time::Local
1413
1414Efficiently compute time from local and GMT time
1415
1416=item Time::gmtime
1417
1418By-name interface to Perl's built-in gmtime() function
1419
1420=item Time::localtime
1421
1422By-name interface to Perl's built-in localtime() function
1423
1424=item Time::tm
1425
1426Internal object used by Time::gmtime and Time::localtime
1427
1428=item UNIVERSAL
1429
1430Base class for ALL classes (blessed references)
1431
1432=item Unicode::Collate
1433
1434Unicode Collation Algorithm
1435
1436=item Unicode::Normalize
1437
1438Unicode Normalization Forms
1439
1440=item Unicode::UCD
1441
1442Unicode character database
1443
1444=item User::grent
1445
1446By-name interface to Perl's built-in getgr*() functions
1447
1448=item User::pwent
1449
1450By-name interface to Perl's built-in getpw*() functions
1451
1452=item XS::APItest
1453
1454Test the perl C API
1455
1456=item XS::Typemap
1457
1458Module to test the XS typemaps distributed with perl
1459
1460=item XSLoader
1461
1462Dynamically load C libraries into Perl code
1463
1464=back
1465
1466To find out I<all> modules installed on your system, including
1467those without documentation or outside the standard release,
1468just use the following command (under the default win32 shell,
1469double quotes should be used instead of single quotes).
1470
1471 % perl -MFile::Find=find -MFile::Spec::Functions -Tlwe \
1472 'find { wanted => sub { print canonpath $_ if /\.pm\z/ },
1473 no_chdir => 1 }, @INC'
1474
1475(The -T is here to prevent '.' from being listed in @INC.)
1476They should all have their own documentation installed and accessible
1477via your system man(1) command. If you do not have a B<find>
1478program, you can use the Perl B<find2perl> program instead, which
1479generates Perl code as output you can run through perl. If you
1480have a B<man> program but it doesn't find your modules, you'll have
1481to fix your manpath. See L<perl> for details. If you have no
1482system B<man> command, you might try the B<perldoc> program.
1483
1484Note also that the command C<perldoc perllocal> gives you a (possibly
1485incomplete) list of the modules that have been further installed on
1486your system. (The perllocal.pod file is updated by the standard MakeMaker
1487install process.)
1488
1489=head2 Extension Modules
1490
1491Extension modules are written in C (or a mix of Perl and C). They
1492are usually dynamically loaded into Perl if and when you need them,
1493but may also be linked in statically. Supported extension modules
1494include Socket, Fcntl, and POSIX.
1495
1496Many popular C extension modules do not come bundled (at least, not
1497completely) due to their sizes, volatility, or simply lack of time
1498for adequate testing and configuration across the multitude of
1499platforms on which Perl was beta-tested. You are encouraged to
1500look for them on CPAN (described below), or using web search engines
1501like Alta Vista or Google.
1502
1503=head1 CPAN
1504
1505CPAN stands for Comprehensive Perl Archive Network; it's a globally
1506replicated trove of Perl materials, including documentation, style
1507guides, tricks and traps, alternate ports to non-Unix systems and
1508occasional binary distributions for these. Search engines for
1509CPAN can be found at http://www.cpan.org/
1510
1511Most importantly, CPAN includes around a thousand unbundled modules,
1512some of which require a C compiler to build. Major categories of
1513modules are:
1514
1515=over
1516
1517=item *
1518
1519Language Extensions and Documentation Tools
1520
1521=item *
1522
1523Development Support
1524
1525=item *
1526
1527Operating System Interfaces
1528
1529=item *
1530
1531Networking, Device Control (modems) and InterProcess Communication
1532
1533=item *
1534
1535Data Types and Data Type Utilities
1536
1537=item *
1538
1539Database Interfaces
1540
1541=item *
1542
1543User Interfaces
1544
1545=item *
1546
1547Interfaces to / Emulations of Other Programming Languages
1548
1549=item *
1550
1551File Names, File Systems and File Locking (see also File Handles)
1552
1553=item *
1554
1555String Processing, Language Text Processing, Parsing, and Searching
1556
1557=item *
1558
1559Option, Argument, Parameter, and Configuration File Processing
1560
1561=item *
1562
1563Internationalization and Locale
1564
1565=item *
1566
1567Authentication, Security, and Encryption
1568
1569=item *
1570
1571World Wide Web, HTML, HTTP, CGI, MIME
1572
1573=item *
1574
1575Server and Daemon Utilities
1576
1577=item *
1578
1579Archiving and Compression
1580
1581=item *
1582
1583Images, Pixmap and Bitmap Manipulation, Drawing, and Graphing
1584
1585=item *
1586
1587Mail and Usenet News
1588
1589=item *
1590
1591Control Flow Utilities (callbacks and exceptions etc)
1592
1593=item *
1594
1595File Handle and Input/Output Stream Utilities
1596
1597=item *
1598
1599Miscellaneous Modules
1600
1601=back
1602
1603The list of the registered CPAN sites as of this writing follows.
1604Please note that the sorting order is alphabetical on fields:
1605
1606Continent
1607 |
1608 |-->Country
1609 |
1610 |-->[state/province]
1611 |
1612 |-->ftp
1613 |
1614 |-->[http]
1615
1616and thus the North American servers happen to be listed between the
1617European and the South American sites.
1618
1619You should try to choose one close to you.
1620
1621=head2 Africa
1622
1623=over 4
1624
1625=item South Africa
1626
1627 http://ftp.rucus.ru.ac.za/pub/perl/CPAN/
1628 ftp://ftp.rucus.ru.ac.za/pub/perl/CPAN/
1629 ftp://ftp.is.co.za/programming/perl/CPAN/
1630 ftp://ftp.saix.net/pub/CPAN/
1631 ftp://ftp.sun.ac.za/CPAN/CPAN/
1632
1633=back
1634
1635=head2 Asia
1636
1637=over 4
1638
1639=item China
1640
1641 http://cpan.linuxforum.net/
1642 http://cpan.shellhung.org/
1643 ftp://ftp.shellhung.org/pub/CPAN
1644 ftp://mirrors.hknet.com/CPAN
1645
1646=item Indonesia
1647
1648 http://mirrors.tf.itb.ac.id/cpan/
1649 http://cpan.cbn.net.id/
1650 ftp://ftp.cbn.net.id/mirror/CPAN
1651
1652=item Israel
1653
1654 ftp://ftp.iglu.org.il/pub/CPAN/
1655 http://cpan.lerner.co.il/
1656 http://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/
1657 ftp://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/
1658
1659=item Japan
1660
1661 ftp://ftp.u-aizu.ac.jp/pub/CPAN
1662 ftp://ftp.kddlabs.co.jp/CPAN/
1663 ftp://ftp.ayamura.org/pub/CPAN/
1664 ftp://ftp.jaist.ac.jp/pub/lang/perl/CPAN/
1665 http://ftp.cpan.jp/
1666 ftp://ftp.cpan.jp/CPAN/
1667 ftp://ftp.dti.ad.jp/pub/lang/CPAN/
1668 ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/
1669
1670=item Malaysia
1671
1672 http://cpan.MyBSD.org.my
1673 http://mirror.leafbug.org/pub/CPAN
1674 http://ossig.mncc.com.my/mirror/pub/CPAN
1675
1676=item Russian Federation
1677
1678 http://cpan.tomsk.ru
1679 ftp://cpan.tomsk.ru/
1680
1681=item Saudi Arabia
1682
1683 ftp://ftp.isu.net.sa/pub/CPAN/
1684
1685=item Singapore
1686
1687 http://CPAN.en.com.sg/
1688 ftp://cpan.en.com.sg/
1689 http://mirror.averse.net/pub/CPAN
1690 ftp://mirror.averse.net/pub/CPAN
1691 http://cpan.oss.eznetsols.org
1692 ftp://ftp.oss.eznetsols.org/cpan
1693
1694=item South Korea
1695
1696 http://CPAN.bora.net/
1697 ftp://ftp.bora.net/pub/CPAN/
1698 http://mirror.kr.FreeBSD.org/CPAN
1699 ftp://ftp.kr.FreeBSD.org/pub/CPAN
1700
1701=item Taiwan
1702
1703 ftp://ftp.nctu.edu.tw/UNIX/perl/CPAN
1704 http://cpan.cdpa.nsysu.edu.tw/
1705 ftp://cpan.cdpa.nsysu.edu.tw/pub/CPAN
1706 http://ftp.isu.edu.tw/pub/CPAN
1707 ftp://ftp.isu.edu.tw/pub/CPAN
1708 ftp://ftp1.sinica.edu.tw/pub1/perl/CPAN/
1709 http://ftp.tku.edu.tw/pub/CPAN/
1710 ftp://ftp.tku.edu.tw/pub/CPAN/
1711
1712=item Thailand
1713
1714 ftp://ftp.loxinfo.co.th/pub/cpan/
1715 ftp://ftp.cs.riubon.ac.th/pub/mirrors/CPAN/
1716
1717=back
1718
1719=head2 Central America
1720
1721=over 4
1722
1723=item Costa Rica
1724
1725 http://ftp.ucr.ac.cr/Unix/CPAN/
1726 ftp://ftp.ucr.ac.cr/pub/Unix/CPAN/
1727
1728=back
1729
1730=head2 Europe
1731
1732=over 4
1733
1734=item Austria
1735
1736 http://cpan.inode.at/
1737 ftp://cpan.inode.at
1738 ftp://ftp.tuwien.ac.at/pub/CPAN/
1739
1740=item Belgium
1741
1742 http://ftp.easynet.be/pub/CPAN/
1743 ftp://ftp.easynet.be/pub/CPAN/
1744 http://cpan.skynet.be
1745 ftp://ftp.cpan.skynet.be/pub/CPAN
1746 ftp://ftp.kulnet.kuleuven.ac.be/pub/mirror/CPAN/
1747
1748=item Bosnia and Herzegovina
1749
1750 http://cpan.blic.net/
1751
1752=item Bulgaria
1753
1754 http://cpan.online.bg
1755 ftp://cpan.online.bg/cpan
1756 http://cpan.zadnik.org
1757 ftp://ftp.zadnik.org/mirrors/CPAN/
1758 http://cpan.lirex.net/
1759 ftp://ftp.lirex.net/pub/mirrors/CPAN
1760
1761=item Croatia
1762
1763 http://ftp.linux.hr/pub/CPAN/
1764 ftp://ftp.linux.hr/pub/CPAN/
1765
1766=item Czech Republic
1767
1768 ftp://ftp.fi.muni.cz/pub/CPAN/
1769 ftp://sunsite.mff.cuni.cz/MIRRORS/ftp.funet.fi/pub/languages/perl/CPAN/
1770
1771=item Denmark
1772
1773 http://mirrors.sunsite.dk/cpan/
1774 ftp://sunsite.dk/mirrors/cpan/
1775 http://cpan.cybercity.dk
1776 http://www.cpan.dk/CPAN/
1777 ftp://www.cpan.dk/ftp.cpan.org/CPAN/
1778
1779=item Estonia
1780
1781 ftp://ftp.ut.ee/pub/languages/perl/CPAN/
1782
1783=item Finland
1784
1785 ftp://ftp.funet.fi/pub/languages/perl/CPAN/
1786 http://mirror.eunet.fi/CPAN
1787
1788=item France
1789
1790 http://www.enstimac.fr/Perl/CPAN
1791 http://ftp.u-paris10.fr/perl/CPAN
1792 ftp://ftp.u-paris10.fr/perl/CPAN
1793 http://cpan.mirrors.easynet.fr/
1794 ftp://cpan.mirrors.easynet.fr/pub/ftp.cpan.org/
1795 ftp://ftp.club-internet.fr/pub/perl/CPAN/
1796 http://fr.cpan.org/
1797 ftp://ftp.lip6.fr/pub/perl/CPAN/
1798 ftp://ftp.oleane.net/pub/mirrors/CPAN/
1799 ftp://ftp.pasteur.fr/pub/computing/CPAN/
1800 http://mir2.ovh.net/ftp.cpan.org
1801 ftp://mir1.ovh.net/ftp.cpan.org
1802 http://ftp.crihan.fr/mirrors/ftp.cpan.org/
1803 ftp://ftp.crihan.fr/mirrors/ftp.cpan.org/
1804 http://ftp.u-strasbg.fr/CPAN
1805 ftp://ftp.u-strasbg.fr/CPAN
1806 ftp://cpan.cict.fr/pub/CPAN/
1807 ftp://ftp.uvsq.fr/pub/perl/CPAN/
1808
1809=item Germany
1810
1811 ftp://ftp.rub.de/pub/CPAN/
1812 ftp://ftp.freenet.de/pub/ftp.cpan.org/pub/CPAN/
1813 ftp://ftp.uni-erlangen.de/pub/source/CPAN/
1814 ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/CPAN
1815 http://pandemonium.tiscali.de/pub/CPAN/
1816 ftp://pandemonium.tiscali.de/pub/CPAN/
1817 http://ftp.gwdg.de/pub/languages/perl/CPAN/
1818 ftp://ftp.gwdg.de/pub/languages/perl/CPAN/
1819 ftp://ftp.uni-hamburg.de/pub/soft/lang/perl/CPAN/
1820 ftp://ftp.leo.org/pub/CPAN/
1821 http://cpan.noris.de/
1822 ftp://cpan.noris.de/pub/CPAN/
1823 ftp://ftp.mpi-sb.mpg.de/pub/perl/CPAN/
1824 ftp://ftp.gmd.de/mirrors/CPAN/
1825
1826=item Greece
1827
1828 ftp://ftp.acn.gr/pub/lang/perl
1829 ftp://ftp.forthnet.gr/pub/languages/perl/CPAN
1830 ftp://ftp.ntua.gr/pub/lang/perl/
1831
1832=item Hungary
1833
1834 http://ftp.kfki.hu/packages/perl/CPAN/
1835 ftp://ftp.kfki.hu/pub/packages/perl/CPAN/
1836
1837=item Iceland
1838
1839 http://ftp.rhnet.is/pub/CPAN/
1840 ftp://ftp.rhnet.is/pub/CPAN/
1841
1842=item Ireland
1843
1844 http://cpan.indigo.ie/
1845 ftp://cpan.indigo.ie/pub/CPAN/
1846 http://ftp.heanet.ie/mirrors/ftp.perl.org/pub/CPAN
1847 ftp://ftp.heanet.ie/mirrors/ftp.perl.org/pub/CPAN
1848 http://sunsite.compapp.dcu.ie/pub/perl/
1849 ftp://sunsite.compapp.dcu.ie/pub/perl/
1850
1851=item Italy
1852
1853 http://cpan.nettuno.it/
1854 http://gusp.dyndns.org/CPAN/
1855 ftp://gusp.dyndns.org/pub/CPAN
1856 http://softcity.iol.it/cpan
1857 ftp://softcity.iol.it/pub/cpan
1858 ftp://ftp.unina.it/pub/Other/CPAN/CPAN/
1859 ftp://ftp.unipi.it/pub/mirror/perl/CPAN/
1860 ftp://cis.uniRoma2.it/CPAN/
1861 ftp://ftp.edisontel.it/pub/CPAN_Mirror/
1862 http://cpan.flashnet.it/
1863 ftp://ftp.flashnet.it/pub/CPAN/
1864
1865=item Latvia
1866
1867 http://kvin.lv/pub/CPAN/
1868
1869=item Lithuania
1870
1871 ftp://ftp.unix.lt/pub/CPAN/
1872
1873=item Netherlands
1874
1875 ftp://download.xs4all.nl/pub/mirror/CPAN/
1876 ftp://ftp.nl.uu.net/pub/CPAN/
1877 ftp://ftp.nluug.nl/pub/languages/perl/CPAN/
1878 http://cpan.cybercomm.nl/
1879 ftp://mirror.cybercomm.nl/pub/CPAN
1880 ftp://mirror.vuurwerk.nl/pub/CPAN/
1881 ftp://ftp.cpan.nl/pub/CPAN/
1882 http://ftp.easynet.nl/mirror/CPAN
1883 ftp://ftp.easynet.nl/mirror/CPAN
1884 http://archive.cs.uu.nl/mirror/CPAN/
1885 ftp://ftp.cs.uu.nl/mirror/CPAN/
1886
1887=item Norway
1888
1889 ftp://ftp.uninett.no/pub/languages/perl/CPAN
1890 ftp://ftp.uit.no/pub/languages/perl/cpan/
1891
1892=item Poland
1893
1894 ftp://ftp.mega.net.pl/CPAN
1895 ftp://ftp.man.torun.pl/pub/doc/CPAN/
1896 ftp://sunsite.icm.edu.pl/pub/CPAN/
1897
1898=item Portugal
1899
1900 ftp://ftp.ua.pt/pub/CPAN/
1901 ftp://perl.di.uminho.pt/pub/CPAN/
1902 http://cpan.dei.uc.pt/
1903 ftp://ftp.dei.uc.pt/pub/CPAN
1904 ftp://ftp.nfsi.pt/pub/CPAN
1905 http://ftp.linux.pt/pub/mirrors/CPAN
1906 ftp://ftp.linux.pt/pub/mirrors/CPAN
1907 http://cpan.ip.pt/
1908 ftp://cpan.ip.pt/pub/cpan/
1909 http://cpan.telepac.pt/
1910 ftp://ftp.telepac.pt/pub/cpan/
1911
1912=item Romania
1913
1914 ftp://ftp.bio-net.ro/pub/CPAN
1915 ftp://ftp.kappa.ro/pub/mirrors/ftp.perl.org/pub/CPAN/
1916 ftp://ftp.lug.ro/CPAN
1917 ftp://ftp.roedu.net/pub/CPAN/
1918 ftp://ftp.dntis.ro/pub/cpan/
1919 ftp://ftp.iasi.roedu.net/pub/mirrors/ftp.cpan.org/
1920 http://cpan.ambra.ro/
1921 ftp://ftp.ambra.ro/pub/CPAN
1922 ftp://ftp.dnttm.ro/pub/CPAN/
1923 ftp://ftp.lasting.ro/pub/CPAN
1924 ftp://ftp.timisoara.roedu.net/mirrors/CPAN/
1925
1926=item Russia
1927
1928 ftp://ftp.chg.ru/pub/lang/perl/CPAN/
1929 http://cpan.rinet.ru/
1930 ftp://cpan.rinet.ru/pub/mirror/CPAN/
1931 ftp://ftp.aha.ru/pub/CPAN/
1932 ftp://ftp.corbina.ru/pub/CPAN/
1933 http://cpan.sai.msu.ru/
1934 ftp://ftp.sai.msu.su/pub/lang/perl/CPAN/
1935
1936=item Slovakia
1937
1938 ftp://ftp.cvt.stuba.sk/pub/CPAN/
1939
1940=item Slovenia
1941
1942 ftp://ftp.arnes.si/software/perl/CPAN/
1943
1944=item Spain
1945
1946 http://cpan.imasd.elmundo.es/
1947 ftp://ftp.rediris.es/mirror/CPAN/
1948 ftp://ftp.ri.telefonica-data.net/CPAN
1949 ftp://ftp.etse.urv.es/pub/perl/
1950
1951=item Sweden
1952
1953 http://ftp.du.se/CPAN/
1954 ftp://ftp.du.se/pub/CPAN/
1955 http://mirror.dataphone.se/CPAN
1956 ftp://mirror.dataphone.se/pub/CPAN
1957 ftp://ftp.sunet.se/pub/lang/perl/CPAN/
1958
1959=item Switzerland
1960
1961 http://cpan.mirror.solnet.ch/
1962 ftp://ftp.solnet.ch/mirror/CPAN/
1963 ftp://ftp.danyk.ch/CPAN/
1964 ftp://sunsite.cnlab-switch.ch/mirror/CPAN/
1965
1966=item Turkey
1967
1968 http://ftp.ulak.net.tr/perl/CPAN/
1969 ftp://ftp.ulak.net.tr/perl/CPAN
1970 ftp://sunsite.bilkent.edu.tr/pub/languages/CPAN/
1971
1972=item Ukraine
1973
1974 http://cpan.org.ua/
1975 ftp://cpan.org.ua/
1976 ftp://ftp.perl.org.ua/pub/CPAN/
1977 http://no-more.kiev.ua/CPAN/
1978 ftp://no-more.kiev.ua/pub/CPAN/
1979
1980=item United Kingdom
1981
1982 http://www.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN
1983 ftp://ftp.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN/
1984 http://cpan.teleglobe.net/
1985 ftp://cpan.teleglobe.net/pub/CPAN
1986 http://cpan.mirror.anlx.net/
1987 ftp://ftp.mirror.anlx.net/CPAN/
1988 http://cpan.etla.org/
1989 ftp://cpan.etla.org/pub/CPAN
1990 ftp://ftp.demon.co.uk/pub/CPAN/
1991 http://cpan.m.flirble.org/
1992 ftp://ftp.flirble.org/pub/languages/perl/CPAN/
1993 ftp://ftp.plig.org/pub/CPAN/
1994 http://cpan.hambule.co.uk/
1995 http://cpan.mirrors.clockerz.net/
1996 ftp://ftp.clockerz.net/pub/CPAN/
1997 ftp://usit.shef.ac.uk/pub/packages/CPAN/
1998
1999=back
2000
2001=head2 North America
2002
2003=over 4
2004
2005=item Canada
2006
2007=over 8
2008
2009=item Alberta
2010
2011 http://cpan.sunsite.ualberta.ca/
2012 ftp://cpan.sunsite.ualberta.ca/pub/CPAN/
2013
2014=item Manitoba
2015
2016 http://theoryx5.uwinnipeg.ca/pub/CPAN/
2017 ftp://theoryx5.uwinnipeg.ca/pub/CPAN/
2018
2019=item Nova Scotia
2020
2021 ftp://cpan.chebucto.ns.ca/pub/CPAN/
2022
2023=item Ontario
2024
2025 ftp://ftp.nrc.ca/pub/CPAN/
2026
2027=back
2028
2029=item Mexico
2030
2031 http://cpan.azc.uam.mx
2032 ftp://cpan.azc.uam.mx/mirrors/CPAN
2033 http://www.cpan.unam.mx/
2034 ftp://ftp.unam.mx/pub/CPAN
2035 http://www.msg.com.mx/CPAN/
2036 ftp://ftp.msg.com.mx/pub/CPAN/
2037
2038=item United States
2039
2040=over 8
2041
2042=item Alabama
2043
2044 http://mirror.hiwaay.net/CPAN/
2045 ftp://mirror.hiwaay.net/CPAN/
2046
2047=item California
2048
2049 http://cpan.develooper.com/
2050 http://www.cpan.org/
2051 ftp://cpan.valueclick.com/pub/CPAN/
2052 http://www.mednor.net/ftp/pub/mirrors/CPAN/
2053 ftp://ftp.mednor.net/pub/mirrors/CPAN/
2054 http://mirrors.gossamer-threads.com/CPAN
2055 ftp://cpan.nas.nasa.gov/pub/perl/CPAN/
2056 http://mirrors.kernel.org/cpan/
2057 ftp://mirrors.kernel.org/pub/CPAN
2058 http://cpan-sj.viaverio.com/
2059 ftp://cpan-sj.viaverio.com/pub/CPAN/
2060 http://cpan.digisle.net/
2061 ftp://cpan.digisle.net/pub/CPAN
2062 http://www.perl.com/CPAN/
2063 http://www.uberlan.net/CPAN
2064
2065=item Colorado
2066
2067 ftp://ftp.cs.colorado.edu/pub/perl/CPAN/
2068 http://cpan.four10.com
2069
2070=item Delaware
2071
2072 http://ftp.lug.udel.edu/pub/CPAN
2073 ftp://ftp.lug.udel.edu/pub/CPAN
2074
2075=item District of Columbia
2076
2077 ftp://ftp.dc.aleron.net/pub/CPAN/
2078
2079=item Florida
2080
2081 ftp://ftp.cise.ufl.edu/pub/mirrors/CPAN/
2082 http://mirror.csit.fsu.edu/pub/CPAN/
2083 ftp://mirror.csit.fsu.edu/pub/CPAN/
2084 http://cpan.mirrors.nks.net/
2085
2086=item Indiana
2087
2088 ftp://ftp.uwsg.iu.edu/pub/perl/CPAN/
2089 http://cpan.netnitco.net/
2090 ftp://cpan.netnitco.net/pub/mirrors/CPAN/
2091 http://archive.progeny.com/CPAN/
2092 ftp://archive.progeny.com/CPAN/
2093 http://fx.saintjoe.edu/pub/CPAN
2094 ftp://ftp.saintjoe.edu/pub/CPAN
2095 http://csociety-ftp.ecn.purdue.edu/pub/CPAN
2096 ftp://csociety-ftp.ecn.purdue.edu/pub/CPAN
2097
2098=item Kentucky
2099
2100 http://cpan.uky.edu/
2101 ftp://cpan.uky.edu/pub/CPAN/
2102 http://slugsite.louisville.edu/cpan
2103 ftp://slugsite.louisville.edu/CPAN
2104
2105=item Massachusetts
2106
2107 http://mirrors.towardex.com/CPAN
2108 ftp://mirrors.towardex.com/pub/CPAN
2109 ftp://ftp.ccs.neu.edu/net/mirrors/ftp.funet.fi/pub/languages/perl/CPAN/
2110
2111=item Michigan
2112
2113 ftp://cpan.cse.msu.edu/
2114 http://cpan.calvin.edu/pub/CPAN
2115 ftp://cpan.calvin.edu/pub/CPAN
2116
2117=item Nevada
2118
2119 http://www.oss.redundant.com/pub/CPAN
2120 ftp://www.oss.redundant.com/pub/CPAN
2121
2122=item New Jersey
2123
2124 http://ftp.cpanel.net/pub/CPAN/
2125 ftp://ftp.cpanel.net/pub/CPAN/
2126 http://cpan.teleglobe.net/
2127 ftp://cpan.teleglobe.net/pub/CPAN
2128
2129=item New York
2130
2131 http://cpan.belfry.net/
2132 http://cpan.erlbaum.net/
2133 ftp://cpan.erlbaum.net/
2134 http://cpan.thepirtgroup.com/
2135 ftp://cpan.thepirtgroup.com/
2136 ftp://ftp.stealth.net/pub/CPAN/
2137 http://www.rge.com/pub/languages/perl/
2138 ftp://ftp.rge.com/pub/languages/perl/
2139
2140=item North Carolina
2141
2142 http://www.ibiblio.org/pub/languages/perl/CPAN
2143 ftp://ftp.ibiblio.org/pub/languages/perl/CPAN
2144 ftp://ftp.duke.edu/pub/perl/
2145 ftp://ftp.ncsu.edu/pub/mirror/CPAN/
2146
2147=item Oklahoma
2148
2149 ftp://ftp.ou.edu/mirrors/CPAN/
2150
2151=item Oregon
2152
2153 ftp://ftp.orst.edu/pub/CPAN
2154
2155=item Pennsylvania
2156
2157 http://ftp.epix.net/CPAN/
2158 ftp://ftp.epix.net/pub/languages/perl/
2159 http://mirrors.phenominet.com/pub/CPAN/
2160 ftp://mirrors.phenominet.com/pub/CPAN/
2161 http://cpan.pair.com/
2162 ftp://cpan.pair.com/pub/CPAN/
2163 ftp://carroll.cac.psu.edu/pub/CPAN/
2164
2165=item Tennessee
2166
2167 ftp://ftp.sunsite.utk.edu/pub/CPAN/
2168
2169=item Texas
2170
2171 http://ftp.sedl.org/pub/mirrors/CPAN/
2172 http://www.binarycode.org/cpan
2173 ftp://mirror.telentente.com/pub/CPAN
2174 http://mirrors.theonlinerecordstore.com/CPAN
2175
2176=item Utah
2177
2178 ftp://mirror.xmission.com/CPAN/
2179
2180=item Virginia
2181
2182 http://cpan-du.viaverio.com/
2183 ftp://cpan-du.viaverio.com/pub/CPAN/
2184 http://mirrors.rcn.net/pub/lang/CPAN/
2185 ftp://mirrors.rcn.net/pub/lang/CPAN/
2186 http://perl.secsup.org/
2187 ftp://perl.secsup.org/pub/perl/
2188 http://noc.cvaix.com/mirrors/CPAN/
2189
2190=item Washington
2191
2192 http://cpan.llarian.net/
2193 ftp://cpan.llarian.net/pub/CPAN/
2194 http://cpan.mirrorcentral.com/
2195 ftp://ftp.mirrorcentral.com/pub/CPAN/
2196 ftp://ftp-mirror.internap.com/pub/CPAN/
2197
2198=item Wisconsin
2199
2200 http://mirror.sit.wisc.edu/pub/CPAN/
2201 ftp://mirror.sit.wisc.edu/pub/CPAN/
2202 http://mirror.aphix.com/CPAN
2203 ftp://mirror.aphix.com/pub/CPAN
2204
2205=back
2206
2207=back
2208
2209=head2 Oceania
2210
2211=over 4
2212
2213=item Australia
2214
2215 http://ftp.planetmirror.com/pub/CPAN/
2216 ftp://ftp.planetmirror.com/pub/CPAN/
2217 ftp://mirror.aarnet.edu.au/pub/perl/CPAN/
2218 ftp://cpan.topend.com.au/pub/CPAN/
2219 http://cpan.mirrors.ilisys.com.au
2220
2221=item New Zealand
2222
2223 ftp://ftp.auckland.ac.nz/pub/perl/CPAN/
2224
2225=item United States
2226
2227 http://aniani.ifa.hawaii.edu/CPAN/
2228 ftp://aniani.ifa.hawaii.edu/CPAN/
2229
2230=back
2231
2232=head2 South America
2233
2234=over 4
2235
2236=item Argentina
2237
2238 ftp://mirrors.bannerlandia.com.ar/mirrors/CPAN/
2239 http://www.linux.org.ar/mirrors/cpan
2240 ftp://ftp.linux.org.ar/mirrors/cpan
2241
2242=item Brazil
2243
2244 ftp://cpan.pop-mg.com.br/pub/CPAN/
2245 ftp://ftp.matrix.com.br/pub/perl/CPAN/
2246 http://cpan.hostsul.com.br/
2247 ftp://cpan.hostsul.com.br/
2248
2249=item Chile
2250
2251 http://cpan.netglobalis.net/
2252 ftp://cpan.netglobalis.net/pub/CPAN/
2253
2254=back
2255
2256=head2 RSYNC Mirrors
2257
2258 www.linux.org.ar::cpan
2259 theoryx5.uwinnipeg.ca::CPAN
2260 ftp.shellhung.org::CPAN
2261 rsync.nic.funet.fi::CPAN
2262 ftp.u-paris10.fr::CPAN
2263 mir1.ovh.net::CPAN
2264 rsync://ftp.crihan.fr::CPAN
2265 ftp.gwdg.de::FTP/languages/perl/CPAN/
2266 ftp.leo.org::CPAN
2267 ftp.cbn.net.id::CPAN
2268 rsync://ftp.heanet.ie/mirrors/ftp.perl.org/pub/CPAN
2269 ftp.iglu.org.il::CPAN
2270 gusp.dyndns.org::cpan
2271 ftp.kddlabs.co.jp::cpan
2272 ftp.ayamura.org::pub/CPAN/
2273 mirror.leafbug.org::CPAN
2274 rsync.en.com.sg::CPAN
2275 mirror.averse.net::cpan
2276 rsync.oss.eznetsols.org
2277 ftp.kr.FreeBSD.org::CPAN
2278 ftp.solnet.ch::CPAN
2279 cpan.cdpa.nsysu.edu.tw::CPAN
2280 cpan.teleglobe.net::CPAN
2281 rsync://rsync.mirror.anlx.net::CPAN
2282 ftp.sedl.org::cpan
2283 ibiblio.org::CPAN
2284 cpan-du.viaverio.com::CPAN
2285 aniani.ifa.hawaii.edu::CPAN
2286 archive.progeny.com::CPAN
2287 rsync://slugsite.louisville.edu::CPAN
2288 mirror.aphix.com::CPAN
2289 cpan.teleglobe.net::CPAN
2290 ftp.lug.udel.edu::cpan
2291 mirrors.kernel.org::mirrors/CPAN
2292 mirrors.phenominet.com::CPAN
2293 cpan.pair.com::CPAN
2294 cpan-sj.viaverio.com::CPAN
2295 mirror.csit.fsu.edu::CPAN
2296 csociety-ftp.ecn.purdue.edu::CPAN
2297
2298For an up-to-date listing of CPAN sites,
2299see http://www.cpan.org/SITES or ftp://www.cpan.org/SITES .
2300
2301=head1 Modules: Creation, Use, and Abuse
2302
2303(The following section is borrowed directly from Tim Bunce's modules
2304file, available at your nearest CPAN site.)
2305
2306Perl implements a class using a package, but the presence of a
2307package doesn't imply the presence of a class. A package is just a
2308namespace. A class is a package that provides subroutines that can be
2309used as methods. A method is just a subroutine that expects, as its
2310first argument, either the name of a package (for "static" methods),
2311or a reference to something (for "virtual" methods).
2312
2313A module is a file that (by convention) provides a class of the same
2314name (sans the .pm), plus an import method in that class that can be
2315called to fetch exported symbols. This module may implement some of
2316its methods by loading dynamic C or C++ objects, but that should be
2317totally transparent to the user of the module. Likewise, the module
2318might set up an AUTOLOAD function to slurp in subroutine definitions on
2319demand, but this is also transparent. Only the F<.pm> file is required to
2320exist. See L<perlsub>, L<perltoot>, and L<AutoLoader> for details about
2321the AUTOLOAD mechanism.
2322
2323=head2 Guidelines for Module Creation
2324
2325=over 4
2326
2327=item *
2328
2329Do similar modules already exist in some form?
2330
2331If so, please try to reuse the existing modules either in whole or
2332by inheriting useful features into a new class. If this is not
2333practical try to get together with the module authors to work on
2334extending or enhancing the functionality of the existing modules.
2335A perfect example is the plethora of packages in perl4 for dealing
2336with command line options.
2337
2338If you are writing a module to expand an already existing set of
2339modules, please coordinate with the author of the package. It
2340helps if you follow the same naming scheme and module interaction
2341scheme as the original author.
2342
2343=item *
2344
2345Try to design the new module to be easy to extend and reuse.
2346
2347Try to C<use warnings;> (or C<use warnings qw(...);>).
2348Remember that you can add C<no warnings qw(...);> to individual blocks
2349of code that need less warnings.
2350
2351Use blessed references. Use the two argument form of bless to bless
2352into the class name given as the first parameter of the constructor,
2353e.g.,:
2354
2355 sub new {
2356 my $class = shift;
2357 return bless {}, $class;
2358 }
2359
2360or even this if you'd like it to be used as either a static
2361or a virtual method.
2362
2363 sub new {
2364 my $self = shift;
2365 my $class = ref($self) || $self;
2366 return bless {}, $class;
2367 }
2368
2369Pass arrays as references so more parameters can be added later
2370(it's also faster). Convert functions into methods where
2371appropriate. Split large methods into smaller more flexible ones.
2372Inherit methods from other modules if appropriate.
2373
2374Avoid class name tests like: C<die "Invalid" unless ref $ref eq 'FOO'>.
2375Generally you can delete the C<eq 'FOO'> part with no harm at all.
2376Let the objects look after themselves! Generally, avoid hard-wired
2377class names as far as possible.
2378
2379Avoid C<< $r->Class::func() >> where using C<@ISA=qw(... Class ...)> and
2380C<< $r->func() >> would work (see L<perlbot> for more details).
2381
2382Use autosplit so little used or newly added functions won't be a
2383burden to programs that don't use them. Add test functions to
2384the module after __END__ either using AutoSplit or by saying:
2385
2386 eval join('',<main::DATA>) || die $@ unless caller();
2387
2388Does your module pass the 'empty subclass' test? If you say
2389C<@SUBCLASS::ISA = qw(YOURCLASS);> your applications should be able
2390to use SUBCLASS in exactly the same way as YOURCLASS. For example,
2391does your application still work if you change: C<$obj = new YOURCLASS;>
2392into: C<$obj = new SUBCLASS;> ?
2393
2394Avoid keeping any state information in your packages. It makes it
2395difficult for multiple other packages to use yours. Keep state
2396information in objects.
2397
2398Always use B<-w>.
2399
2400Try to C<use strict;> (or C<use strict qw(...);>).
2401Remember that you can add C<no strict qw(...);> to individual blocks
2402of code that need less strictness.
2403
2404Always use B<-w>.
2405
2406Follow the guidelines in the perlstyle(1) manual.
2407
2408Always use B<-w>.
2409
2410=item *
2411
2412Some simple style guidelines
2413
2414The perlstyle manual supplied with Perl has many helpful points.
2415
2416Coding style is a matter of personal taste. Many people evolve their
2417style over several years as they learn what helps them write and
2418maintain good code. Here's one set of assorted suggestions that
2419seem to be widely used by experienced developers:
2420
2421Use underscores to separate words. It is generally easier to read
2422$var_names_like_this than $VarNamesLikeThis, especially for
2423non-native speakers of English. It's also a simple rule that works
2424consistently with VAR_NAMES_LIKE_THIS.
2425
2426Package/Module names are an exception to this rule. Perl informally
2427reserves lowercase module names for 'pragma' modules like integer
2428and strict. Other modules normally begin with a capital letter and
2429use mixed case with no underscores (need to be short and portable).
2430
2431You may find it helpful to use letter case to indicate the scope
2432or nature of a variable. For example:
2433
2434 $ALL_CAPS_HERE constants only (beware clashes with Perl vars)
2435 $Some_Caps_Here package-wide global/static
2436 $no_caps_here function scope my() or local() variables
2437
2438Function and method names seem to work best as all lowercase.
2439e.g., C<< $obj->as_string() >>.
2440
2441You can use a leading underscore to indicate that a variable or
2442function should not be used outside the package that defined it.
2443
2444=item *
2445
2446Select what to export.
2447
2448Do NOT export method names!
2449
2450Do NOT export anything else by default without a good reason!
2451
2452Exports pollute the namespace of the module user. If you must
2453export try to use @EXPORT_OK in preference to @EXPORT and avoid
2454short or common names to reduce the risk of name clashes.
2455
2456Generally anything not exported is still accessible from outside the
2457module using the ModuleName::item_name (or C<< $blessed_ref->method >>)
2458syntax. By convention you can use a leading underscore on names to
2459indicate informally that they are 'internal' and not for public use.
2460
2461(It is actually possible to get private functions by saying:
2462C<my $subref = sub { ... }; &$subref;>. But there's no way to call that
2463directly as a method, because a method must have a name in the symbol
2464table.)
2465
2466As a general rule, if the module is trying to be object oriented
2467then export nothing. If it's just a collection of functions then
2468@EXPORT_OK anything but use @EXPORT with caution.
2469
2470=item *
2471
2472Select a name for the module.
2473
2474This name should be as descriptive, accurate, and complete as
2475possible. Avoid any risk of ambiguity. Always try to use two or
2476more whole words. Generally the name should reflect what is special
2477about what the module does rather than how it does it. Please use
2478nested module names to group informally or categorize a module.
2479There should be a very good reason for a module not to have a nested name.
2480Module names should begin with a capital letter.
2481
2482Having 57 modules all called Sort will not make life easy for anyone
2483(though having 23 called Sort::Quick is only marginally better :-).
2484Imagine someone trying to install your module alongside many others.
2485If in any doubt ask for suggestions in comp.lang.perl.misc.
2486
2487If you are developing a suite of related modules/classes it's good
2488practice to use nested classes with a common prefix as this will
2489avoid namespace clashes. For example: Xyz::Control, Xyz::View,
2490Xyz::Model etc. Use the modules in this list as a naming guide.
2491
2492If adding a new module to a set, follow the original author's
2493standards for naming modules and the interface to methods in
2494those modules.
2495
2496If developing modules for private internal or project specific use,
2497that will never be released to the public, then you should ensure
2498that their names will not clash with any future public module. You
2499can do this either by using the reserved Local::* category or by
2500using a category name that includes an underscore like Foo_Corp::*.
2501
2502To be portable each component of a module name should be limited to
250311 characters. If it might be used on MS-DOS then try to ensure each is
2504unique in the first 8 characters. Nested modules make this easier.
2505
2506=item *
2507
2508Have you got it right?
2509
2510How do you know that you've made the right decisions? Have you
2511picked an interface design that will cause problems later? Have
2512you picked the most appropriate name? Do you have any questions?
2513
2514The best way to know for sure, and pick up many helpful suggestions,
2515is to ask someone who knows. Comp.lang.perl.misc is read by just about
2516all the people who develop modules and it's the best place to ask.
2517
2518All you need to do is post a short summary of the module, its
2519purpose and interfaces. A few lines on each of the main methods is
2520probably enough. (If you post the whole module it might be ignored
2521by busy people - generally the very people you want to read it!)
2522
2523Don't worry about posting if you can't say when the module will be
2524ready - just say so in the message. It might be worth inviting
2525others to help you, they may be able to complete it for you!
2526
2527=item *
2528
2529README and other Additional Files.
2530
2531It's well known that software developers usually fully document the
2532software they write. If, however, the world is in urgent need of
2533your software and there is not enough time to write the full
2534documentation please at least provide a README file containing:
2535
2536=over 10
2537
2538=item *
2539
2540A description of the module/package/extension etc.
2541
2542=item *
2543
2544A copyright notice - see below.
2545
2546=item *
2547
2548Prerequisites - what else you may need to have.
2549
2550=item *
2551
2552How to build it - possible changes to Makefile.PL etc.
2553
2554=item *
2555
2556How to install it.
2557
2558=item *
2559
2560Recent changes in this release, especially incompatibilities
2561
2562=item *
2563
2564Changes / enhancements you plan to make in the future.
2565
2566=back
2567
2568If the README file seems to be getting too large you may wish to
2569split out some of the sections into separate files: INSTALL,
2570Copying, ToDo etc.
2571
2572=over 4
2573
2574=item *
2575
2576Adding a Copyright Notice.
2577
2578How you choose to license your work is a personal decision.
2579The general mechanism is to assert your Copyright and then make
2580a declaration of how others may copy/use/modify your work.
2581
2582Perl, for example, is supplied with two types of licence: The GNU GPL
2583and The Artistic Licence (see the files README, Copying, and Artistic,
2584or L<perlgpl> and L<perlartistic>). Larry has good reasons for NOT
2585just using the GNU GPL.
2586
2587My personal recommendation, out of respect for Larry, Perl, and the
2588Perl community at large is to state something simply like:
2589
2590 Copyright (c) 1995 Your Name. All rights reserved.
2591 This program is free software; you can redistribute it and/or
2592 modify it under the same terms as Perl itself.
2593
2594This statement should at least appear in the README file. You may
2595also wish to include it in a Copying file and your source files.
2596Remember to include the other words in addition to the Copyright.
2597
2598=item *
2599
2600Give the module a version/issue/release number.
2601
2602To be fully compatible with the Exporter and MakeMaker modules you
2603should store your module's version number in a non-my package
2604variable called $VERSION. This should be a floating point
2605number with at least two digits after the decimal (i.e., hundredths,
2606e.g, C<$VERSION = "0.01">). Don't use a "1.3.2" style version.
2607See L<Exporter> for details.
2608
2609It may be handy to add a function or method to retrieve the number.
2610Use the number in announcements and archive file names when
2611releasing the module (ModuleName-1.02.tar.Z).
2612See perldoc ExtUtils::MakeMaker.pm for details.
2613
2614=item *
2615
2616How to release and distribute a module.
2617
2618It's good idea to post an announcement of the availability of your
2619module (or the module itself if small) to the comp.lang.perl.announce
2620Usenet newsgroup. This will at least ensure very wide once-off
2621distribution.
2622
2623If possible, register the module with CPAN. You should
2624include details of its location in your announcement.
2625
2626Some notes about ftp archives: Please use a long descriptive file
2627name that includes the version number. Most incoming directories
2628will not be readable/listable, i.e., you won't be able to see your
2629file after uploading it. Remember to send your email notification
2630message as soon as possible after uploading else your file may get
2631deleted automatically. Allow time for the file to be processed
2632and/or check the file has been processed before announcing its
2633location.
2634
2635FTP Archives for Perl Modules:
2636
2637Follow the instructions and links on:
2638
2639 http://www.cpan.org/modules/00modlist.long.html
2640 http://www.cpan.org/modules/04pause.html
2641
2642or upload to one of these sites:
2643
2644 https://pause.kbx.de/pause/
2645 http://pause.perl.org/pause/
2646
2647and notify <[email protected]>.
2648
2649By using the WWW interface you can ask the Upload Server to mirror
2650your modules from your ftp or WWW site into your own directory on
2651CPAN!
2652
2653Please remember to send me an updated entry for the Module list!
2654
2655=item *
2656
2657Take care when changing a released module.
2658
2659Always strive to remain compatible with previous released versions.
2660Otherwise try to add a mechanism to revert to the
2661old behavior if people rely on it. Document incompatible changes.
2662
2663=back
2664
2665=back
2666
2667=head2 Guidelines for Converting Perl 4 Library Scripts into Modules
2668
2669=over 4
2670
2671=item *
2672
2673There is no requirement to convert anything.
2674
2675If it ain't broke, don't fix it! Perl 4 library scripts should
2676continue to work with no problems. You may need to make some minor
2677changes (like escaping non-array @'s in double quoted strings) but
2678there is no need to convert a .pl file into a Module for just that.
2679
2680=item *
2681
2682Consider the implications.
2683
2684All Perl applications that make use of the script will need to
2685be changed (slightly) if the script is converted into a module. Is
2686it worth it unless you plan to make other changes at the same time?
2687
2688=item *
2689
2690Make the most of the opportunity.
2691
2692If you are going to convert the script to a module you can use the
2693opportunity to redesign the interface. The guidelines for module
2694creation above include many of the issues you should consider.
2695
2696=item *
2697
2698The pl2pm utility will get you started.
2699
2700This utility will read *.pl files (given as parameters) and write
2701corresponding *.pm files. The pl2pm utilities does the following:
2702
2703=over 10
2704
2705=item *
2706
2707Adds the standard Module prologue lines
2708
2709=item *
2710
2711Converts package specifiers from ' to ::
2712
2713=item *
2714
2715Converts die(...) to croak(...)
2716
2717=item *
2718
2719Several other minor changes
2720
2721=back
2722
2723Being a mechanical process pl2pm is not bullet proof. The converted
2724code will need careful checking, especially any package statements.
2725Don't delete the original .pl file till the new .pm one works!
2726
2727=back
2728
2729=head2 Guidelines for Reusing Application Code
2730
2731=over 4
2732
2733=item *
2734
2735Complete applications rarely belong in the Perl Module Library.
2736
2737=item *
2738
2739Many applications contain some Perl code that could be reused.
2740
2741Help save the world! Share your code in a form that makes it easy
2742to reuse.
2743
2744=item *
2745
2746Break-out the reusable code into one or more separate module files.
2747
2748=item *
2749
2750Take the opportunity to reconsider and redesign the interfaces.
2751
2752=item *
2753
2754In some cases the 'application' can then be reduced to a small
2755
2756fragment of code built on top of the reusable modules. In these cases
2757the application could invoked as:
2758
2759 % perl -e 'use Module::Name; method(@ARGV)' ...
2760or
2761 % perl -mModule::Name ... (in perl5.002 or higher)
2762
2763=back
2764
2765=head1 NOTE
2766
2767Perl does not enforce private and public parts of its modules as you may
2768have been used to in other languages like C++, Ada, or Modula-17. Perl
2769doesn't have an infatuation with enforced privacy. It would prefer
2770that you stayed out of its living room because you weren't invited, not
2771because it has a shotgun.
2772
2773The module and its user have a contract, part of which is common law,
2774and part of which is "written". Part of the common law contract is
2775that a module doesn't pollute any namespace it wasn't asked to. The
2776written contract for the module (A.K.A. documentation) may make other
2777provisions. But then you know when you C<use RedefineTheWorld> that
2778you're redefining the world and willing to take the consequences.
Note: See TracBrowser for help on using the repository browser.