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