1PERLMODLIB(1)          Perl Programmers Reference Guide          PERLMODLIB(1)
2
3
4

NAME

6       perlmodlib - constructing new Perl modules and finding existing ones
7

THE PERL MODULE LIBRARY

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       autodie::skip
59                   Skip a package when throwing autodie exceptions
60
61       autouse     Postpone load of modules until a function is used
62
63       base        Establish an ISA relationship with base classes at compile
64                   time
65
66       bigfloat    Transparent big floating point number support for Perl
67
68       bigint      Transparent big integer support for Perl
69
70       bignum      Transparent big number support for Perl
71
72       bigrat      Transparent big rational number support for Perl
73
74       blib        Use MakeMaker's uninstalled version of a package
75
76       builtin     Import built-in utility functions
77
78       bytes       Expose the individual bytes of characters
79
80       charnames   Access to Unicode character names and named character
81                   sequences; also define character names
82
83       constant    Declare constants
84
85       deprecate   Perl pragma for deprecating the inclusion of a module in
86                   core
87
88       diagnostics Produce verbose warning diagnostics
89
90       encoding    Allows you to write your script in non-ASCII and non-UTF-8
91
92       encoding::warnings
93                   Warn on implicit encoding conversions
94
95       experimental
96                   Experimental features made easy
97
98       feature     Enable new features
99
100       fields      Compile-time class fields
101
102       filetest    Control the filetest permission operators
103
104       if          "use" a Perl module if a condition holds
105
106       integer     Use integer arithmetic instead of floating point
107
108       less        Request less of something
109
110       lib         Manipulate @INC at compile time
111
112       locale      Use or avoid POSIX locales for built-in operations
113
114       mro         Method Resolution Order
115
116       ok          Alternative to Test::More::use_ok
117
118       open        Set default PerlIO layers for input and output
119
120       ops         Restrict unsafe operations when compiling
121
122       overload    Package for overloading Perl operations
123
124       overloading Lexically control overloading
125
126       parent      Establish an ISA relationship with base classes at compile
127                   time
128
129       re          Alter regular expression behaviour
130
131       sigtrap     Enable simple signal handling
132
133       sort        Control sort() behaviour
134
135       stable      Experimental features made easy, once we know they're
136                   stable
137
138       strict      Restrict unsafe constructs
139
140       subs        Predeclare subroutine names
141
142       threads     Perl interpreter-based threads
143
144       threads::shared
145                   Perl extension for sharing data structures between threads
146
147       utf8        Enable/disable UTF-8 (or UTF-EBCDIC) in source code
148
149       vars        Predeclare global variable names
150
151       version     Perl extension for Version Objects
152
153       vmsish      Control VMS-specific language features
154
155       warnings    Control optional warnings
156
157       warnings::register
158                   Warnings import function
159
160   Standard Modules
161       Standard, bundled modules are all expected to behave in a well-defined
162       manner with respect to namespace pollution because they use the
163       Exporter module.  See their own documentation for details.
164
165       It's possible that not all modules listed below are installed on your
166       system. For example, the GDBM_File module will not be installed if you
167       don't have the gdbm library.
168
169       Amiga::ARexx
170                   Perl extension for ARexx support
171
172       Amiga::Exec Perl extension for low level amiga support
173
174       AnyDBM_File Provide framework for multiple DBMs
175
176       App::Cpan   Easily interact with CPAN from the command line
177
178       App::Prove  Implements the "prove" command.
179
180       App::Prove::State
181                   State storage for the "prove" command.
182
183       App::Prove::State::Result
184                   Individual test suite results.
185
186       App::Prove::State::Result::Test
187                   Individual test results.
188
189       Archive::Tar
190                   Module for manipulations of tar archives
191
192       Archive::Tar::File
193                   A subclass for in-memory extracted file from Archive::Tar
194
195       Attribute::Handlers
196                   Simpler definition of attribute handlers
197
198       AutoLoader  Load subroutines only on demand
199
200       AutoSplit   Split a package for autoloading
201
202       B           The Perl Compiler Backend
203
204       B::Concise  Walk Perl syntax tree, printing concise info about ops
205
206       B::Deparse  Perl compiler backend to produce perl code
207
208       B::Op_private
209                   OP op_private flag definitions
210
211       B::Showlex  Show lexical variables used in functions or files
212
213       B::Terse    Walk Perl syntax tree, printing terse info about ops
214
215       B::Xref     Generates cross reference reports for Perl programs
216
217       Benchmark   Benchmark running times of Perl code
218
219       "IO::Socket::IP"
220                   Family-neutral IP socket supporting both IPv4 and IPv6
221
222       "Socket"    Networking constants and support functions
223
224       CORE        Namespace for Perl's core routines
225
226       CPAN        Query, download and build perl modules from CPAN sites
227
228       CPAN::API::HOWTO
229                   A recipe book for programming with CPAN.pm
230
231       CPAN::Debug Internal debugging for 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::HandleConfig
240                   Internal configuration handling for CPAN.pm
241
242       CPAN::Kwalify
243                   Interface between CPAN.pm and Kwalify.pm
244
245       CPAN::Meta  The distribution metadata for a CPAN dist
246
247       CPAN::Meta::Converter
248                   Convert CPAN distribution metadata structures
249
250       CPAN::Meta::Feature
251                   An optional feature provided by a CPAN distribution
252
253       CPAN::Meta::History
254                   History of CPAN Meta Spec changes
255
256       CPAN::Meta::History::Meta_1_0
257                   Version 1.0 metadata specification for META.yml
258
259       CPAN::Meta::History::Meta_1_1
260                   Version 1.1 metadata specification for META.yml
261
262       CPAN::Meta::History::Meta_1_2
263                   Version 1.2 metadata specification for META.yml
264
265       CPAN::Meta::History::Meta_1_3
266                   Version 1.3 metadata specification for META.yml
267
268       CPAN::Meta::History::Meta_1_4
269                   Version 1.4 metadata specification for META.yml
270
271       CPAN::Meta::Merge
272                   Merging CPAN Meta fragments
273
274       CPAN::Meta::Prereqs
275                   A set of distribution prerequisites by phase and type
276
277       CPAN::Meta::Requirements
278                   A set of version requirements for a CPAN dist
279
280       CPAN::Meta::Spec
281                   Specification for CPAN distribution metadata
282
283       CPAN::Meta::Validator
284                   Validate CPAN distribution metadata structures
285
286       CPAN::Meta::YAML
287                   Read and write a subset of YAML for CPAN Meta files
288
289       CPAN::Nox   Wrapper around CPAN.pm without using any XS module
290
291       CPAN::Plugin
292                   Base class for CPAN shell extensions
293
294       CPAN::Plugin::Specfile
295                   Proof of concept implementation of a trivial CPAN::Plugin
296
297       CPAN::Queue Internal queue support for CPAN.pm
298
299       CPAN::Tarzip
300                   Internal handling of tar archives for CPAN.pm
301
302       CPAN::Version
303                   Utility functions to compare CPAN versions
304
305       Carp        Alternative warn and die for modules
306
307       Class::Struct
308                   Declare struct-like datatypes as Perl classes
309
310       Compress::Raw::Bzip2
311                   Low-Level Interface to bzip2 compression library
312
313       Compress::Raw::Zlib
314                   Low-Level Interface to zlib or zlib-ng compression library
315
316       Compress::Zlib
317                   Interface to zlib compression library
318
319       Config      Access Perl configuration information
320
321       Config::Extensions
322                   Hash lookup of which core extensions were built.
323
324       Config::Perl::V
325                   Structured data retrieval of perl -V output
326
327       Cwd         Get pathname of current working directory
328
329       DB          Programmatic interface to the Perl debugging API
330
331       DBM_Filter  Filter DBM keys/values
332
333       DBM_Filter::compress
334                   Filter for DBM_Filter
335
336       DBM_Filter::encode
337                   Filter for DBM_Filter
338
339       DBM_Filter::int32
340                   Filter for DBM_Filter
341
342       DBM_Filter::null
343                   Filter for DBM_Filter
344
345       DBM_Filter::utf8
346                   Filter for DBM_Filter
347
348       DB_File     Perl5 access to Berkeley DB version 1.x
349
350       Data::Dumper
351                   Stringified perl data structures, suitable for both
352                   printing and "eval"
353
354       Devel::PPPort
355                   Perl/Pollution/Portability
356
357       Devel::Peek A data debugging tool for the XS programmer
358
359       Devel::SelfStubber
360                   Generate stubs for a SelfLoading module
361
362       Digest      Modules that calculate message digests
363
364       Digest::MD5 Perl interface to the MD5 Algorithm
365
366       Digest::SHA Perl extension for SHA-1/224/256/384/512
367
368       Digest::base
369                   Digest base class
370
371       Digest::file
372                   Calculate digests of files
373
374       DirHandle   (obsolete) supply object methods for directory handles
375
376       Dumpvalue   Provides screen dump of Perl data.
377
378       DynaLoader  Dynamically load C libraries into Perl code
379
380       Encode      Character encodings in Perl
381
382       Encode::Alias
383                   Alias definitions to encodings
384
385       Encode::Byte
386                   Single Byte Encodings
387
388       Encode::CJKConstants
389                   Internally used by Encode::??::ISO_2022_*
390
391       Encode::CN  China-based Chinese Encodings
392
393       Encode::CN::HZ
394                   Internally used by Encode::CN
395
396       Encode::Config
397                   Internally used by Encode
398
399       Encode::EBCDIC
400                   EBCDIC Encodings
401
402       Encode::Encoder
403                   Object Oriented Encoder
404
405       Encode::Encoding
406                   Encode Implementation Base Class
407
408       Encode::GSM0338
409                   ETSI GSM 03.38 Encoding
410
411       Encode::Guess
412                   Guesses encoding from data
413
414       Encode::JP  Japanese Encodings
415
416       Encode::JP::H2Z
417                   Internally used by Encode::JP::2022_JP*
418
419       Encode::JP::JIS7
420                   Internally used by Encode::JP
421
422       Encode::KR  Korean Encodings
423
424       Encode::KR::2022_KR
425                   Internally used by Encode::KR
426
427       Encode::MIME::Header
428                   MIME encoding for an unstructured email header
429
430       Encode::MIME::Name
431                   Internally used by Encode
432
433       Encode::PerlIO
434                   A detailed document on Encode and PerlIO
435
436       Encode::Supported
437                   Encodings supported by Encode
438
439       Encode::Symbol
440                   Symbol Encodings
441
442       Encode::TW  Taiwan-based Chinese Encodings
443
444       Encode::Unicode
445                   Various Unicode Transformation Formats
446
447       Encode::Unicode::UTF7
448                   UTF-7 encoding
449
450       English     Use nice English (or awk) names for ugly punctuation
451                   variables
452
453       Env         Perl module that imports environment variables as scalars
454                   or arrays
455
456       Errno       System errno constants
457
458       Exporter    Implements default import method for modules
459
460       Exporter::Heavy
461                   Exporter guts
462
463       ExtUtils::CBuilder
464                   Compile and link C code for Perl modules
465
466       ExtUtils::CBuilder::Platform::Windows
467                   Builder class for Windows platforms
468
469       ExtUtils::Command
470                   Utilities to replace common UNIX commands in Makefiles etc.
471
472       ExtUtils::Command::MM
473                   Commands for the MM's to use in Makefiles
474
475       ExtUtils::Constant
476                   Generate XS code to import C header constants
477
478       ExtUtils::Constant::Base
479                   Base class for ExtUtils::Constant objects
480
481       ExtUtils::Constant::Utils
482                   Helper functions for ExtUtils::Constant
483
484       ExtUtils::Constant::XS
485                   Generate C code for XS modules' constants.
486
487       ExtUtils::Embed
488                   Utilities for embedding Perl in C/C++ applications
489
490       ExtUtils::Install
491                   Install files from here to there
492
493       ExtUtils::Installed
494                   Inventory management of installed modules
495
496       ExtUtils::Liblist
497                   Determine libraries to use and how to use them
498
499       ExtUtils::MM
500                   OS adjusted ExtUtils::MakeMaker subclass
501
502       ExtUtils::MM::Utils
503                   ExtUtils::MM methods without dependency on
504                   ExtUtils::MakeMaker
505
506       ExtUtils::MM_AIX
507                   AIX specific subclass of ExtUtils::MM_Unix
508
509       ExtUtils::MM_Any
510                   Platform-agnostic MM methods
511
512       ExtUtils::MM_BeOS
513                   Methods to override UN*X behaviour in ExtUtils::MakeMaker
514
515       ExtUtils::MM_Cygwin
516                   Methods to override UN*X behaviour in ExtUtils::MakeMaker
517
518       ExtUtils::MM_DOS
519                   DOS specific subclass of ExtUtils::MM_Unix
520
521       ExtUtils::MM_Darwin
522                   Special behaviors for OS X
523
524       ExtUtils::MM_MacOS
525                   Once produced Makefiles for MacOS Classic
526
527       ExtUtils::MM_NW5
528                   Methods to override UN*X behaviour in ExtUtils::MakeMaker
529
530       ExtUtils::MM_OS2
531                   Methods to override UN*X behaviour in ExtUtils::MakeMaker
532
533       ExtUtils::MM_OS390
534                   OS390 specific subclass of ExtUtils::MM_Unix
535
536       ExtUtils::MM_QNX
537                   QNX specific subclass of ExtUtils::MM_Unix
538
539       ExtUtils::MM_UWIN
540                   U/WIN specific subclass of ExtUtils::MM_Unix
541
542       ExtUtils::MM_Unix
543                   Methods used by ExtUtils::MakeMaker
544
545       ExtUtils::MM_VMS
546                   Methods to override UN*X behaviour in ExtUtils::MakeMaker
547
548       ExtUtils::MM_VOS
549                   VOS specific subclass of ExtUtils::MM_Unix
550
551       ExtUtils::MM_Win32
552                   Methods to override UN*X behaviour in ExtUtils::MakeMaker
553
554       ExtUtils::MM_Win95
555                   Method to customize MakeMaker for Win9X
556
557       ExtUtils::MY
558                   ExtUtils::MakeMaker subclass for customization
559
560       ExtUtils::MakeMaker
561                   Create a module Makefile
562
563       ExtUtils::MakeMaker::Config
564                   Wrapper around Config.pm
565
566       ExtUtils::MakeMaker::FAQ
567                   Frequently Asked Questions About MakeMaker
568
569       ExtUtils::MakeMaker::Locale
570                   Bundled Encode::Locale
571
572       ExtUtils::MakeMaker::Tutorial
573                   Writing a module with MakeMaker
574
575       ExtUtils::Manifest
576                   Utilities to write and check a MANIFEST file
577
578       ExtUtils::Miniperl
579                   Write the C code for miniperlmain.c and perlmain.c
580
581       ExtUtils::Mkbootstrap
582                   Make a bootstrap file for use by DynaLoader
583
584       ExtUtils::Mksymlists
585                   Write linker options files for dynamic extension
586
587       ExtUtils::PL2Bat
588                   Batch file creation to run perl scripts on Windows
589
590       ExtUtils::Packlist
591                   Manage .packlist files
592
593       ExtUtils::ParseXS
594                   Converts Perl XS code into C code
595
596       ExtUtils::ParseXS::Constants
597                   Initialization values for some globals
598
599       ExtUtils::ParseXS::Eval
600                   Clean package to evaluate code in
601
602       ExtUtils::ParseXS::Utilities
603                   Subroutines used with ExtUtils::ParseXS
604
605       ExtUtils::Typemaps
606                   Read/Write/Modify Perl/XS typemap files
607
608       ExtUtils::Typemaps::Cmd
609                   Quick commands for handling typemaps
610
611       ExtUtils::Typemaps::InputMap
612                   Entry in the INPUT section of a typemap
613
614       ExtUtils::Typemaps::OutputMap
615                   Entry in the OUTPUT section of a typemap
616
617       ExtUtils::Typemaps::Type
618                   Entry in the TYPEMAP section of a typemap
619
620       ExtUtils::XSSymSet
621                   Keep sets of symbol names palatable to the VMS linker
622
623       ExtUtils::testlib
624                   Add blib/* directories to @INC
625
626       Fatal       Replace functions with equivalents which succeed or die
627
628       Fcntl       Load the C Fcntl.h defines
629
630       File::Basename
631                   Parse file paths into directory, filename and suffix.
632
633       File::Compare
634                   Compare files or filehandles
635
636       File::Copy  Copy files or filehandles
637
638       File::DosGlob
639                   DOS like globbing and then some
640
641       File::Fetch A generic file fetching mechanism
642
643       File::Find  Traverse a directory tree.
644
645       File::Glob  Perl extension for BSD glob routine
646
647       File::GlobMapper
648                   Extend File Glob to Allow Input and Output Files
649
650       File::Path  Create or remove directory trees
651
652       File::Spec  Portably perform operations on file names
653
654       File::Spec::AmigaOS
655                   File::Spec for AmigaOS
656
657       File::Spec::Cygwin
658                   Methods for Cygwin file specs
659
660       File::Spec::Epoc
661                   Methods for Epoc file specs
662
663       File::Spec::Functions
664                   Portably perform operations on file names
665
666       File::Spec::Mac
667                   File::Spec for Mac OS (Classic)
668
669       File::Spec::OS2
670                   Methods for OS/2 file specs
671
672       File::Spec::Unix
673                   File::Spec for Unix, base for other File::Spec modules
674
675       File::Spec::VMS
676                   Methods for VMS file specs
677
678       File::Spec::Win32
679                   Methods for Win32 file specs
680
681       File::Temp  Return name and handle of a temporary file safely
682
683       File::stat  By-name interface to Perl's built-in stat() functions
684
685       FileCache   Keep more files open than the system permits
686
687       FileHandle  Supply object methods for filehandles
688
689       Filter::Simple
690                   Simplified source filtering
691
692       Filter::Util::Call
693                   Perl Source Filter Utility Module
694
695       FindBin     Locate directory of original perl script
696
697       GDBM_File   Perl5 access to the gdbm library.
698
699       Getopt::Long
700                   Extended processing of command line options
701
702       Getopt::Std Process single-character switches with switch clustering
703
704       HTTP::Tiny  A small, simple, correct HTTP/1.1 client
705
706       Hash::Util  A selection of general-utility hash subroutines
707
708       Hash::Util::FieldHash
709                   Support for Inside-Out Classes
710
711       I18N::Collate
712                   Compare 8-bit scalar data according to the current locale
713
714       I18N::LangTags
715                   Functions for dealing with RFC3066-style language tags
716
717       I18N::LangTags::Detect
718                   Detect the user's language preferences
719
720       I18N::LangTags::List
721                   Tags and names for human languages
722
723       I18N::Langinfo
724                   Query locale information
725
726       IO          Load various IO modules
727
728       IO::Compress::Base
729                   Base Class for IO::Compress modules
730
731       IO::Compress::Bzip2
732                   Write bzip2 files/buffers
733
734       IO::Compress::Deflate
735                   Write RFC 1950 files/buffers
736
737       IO::Compress::FAQ
738                   Frequently Asked Questions about IO::Compress
739
740       IO::Compress::Gzip
741                   Write RFC 1952 files/buffers
742
743       IO::Compress::RawDeflate
744                   Write RFC 1951 files/buffers
745
746       IO::Compress::Zip
747                   Write zip files/buffers
748
749       IO::Dir     Supply object methods for directory handles
750
751       IO::File    Supply object methods for filehandles
752
753       IO::Handle  Supply object methods for I/O handles
754
755       IO::Pipe    Supply object methods for pipes
756
757       IO::Poll    Object interface to system poll call
758
759       IO::Seekable
760                   Supply seek based methods for I/O objects
761
762       IO::Select  OO interface to the select system call
763
764       IO::Socket  Object interface to socket communications
765
766       IO::Socket::INET
767                   Object interface for AF_INET domain sockets
768
769       IO::Socket::UNIX
770                   Object interface for AF_UNIX domain sockets
771
772       IO::Uncompress::AnyInflate
773                   Uncompress zlib-based (zip, gzip) file/buffer
774
775       IO::Uncompress::AnyUncompress
776                   Uncompress gzip, zip, bzip2, zstd, xz, lzma, lzip, lzf or
777                   lzop file/buffer
778
779       IO::Uncompress::Base
780                   Base Class for IO::Uncompress modules
781
782       IO::Uncompress::Bunzip2
783                   Read bzip2 files/buffers
784
785       IO::Uncompress::Gunzip
786                   Read RFC 1952 files/buffers
787
788       IO::Uncompress::Inflate
789                   Read RFC 1950 files/buffers
790
791       IO::Uncompress::RawInflate
792                   Read RFC 1951 files/buffers
793
794       IO::Uncompress::Unzip
795                   Read zip files/buffers
796
797       IO::Zlib    IO:: style interface to Compress::Zlib
798
799       IPC::Cmd    Finding and running system commands made easy
800
801       IPC::Msg    SysV Msg IPC object class
802
803       IPC::Open2  Open a process for both reading and writing using open2()
804
805       IPC::Open3  Open a process for reading, writing, and error handling
806                   using open3()
807
808       IPC::Semaphore
809                   SysV Semaphore IPC object class
810
811       IPC::SharedMem
812                   SysV Shared Memory IPC object class
813
814       IPC::SysV   System V IPC constants and system calls
815
816       Internals   Reserved special namespace for internals related functions
817
818       JSON::PP    JSON::XS compatible pure-Perl module.
819
820       JSON::PP::Boolean
821                   Dummy module providing JSON::PP::Boolean
822
823       List::Util  A selection of general-utility list subroutines
824
825       List::Util::XS
826                   Indicate if List::Util was compiled with a C compiler
827
828       Locale::Maketext
829                   Framework for localization
830
831       Locale::Maketext::Cookbook
832                   Recipes for using Locale::Maketext
833
834       Locale::Maketext::Guts
835                   Deprecated module to load Locale::Maketext utf8 code
836
837       Locale::Maketext::GutsLoader
838                   Deprecated module to load Locale::Maketext utf8 code
839
840       Locale::Maketext::Simple
841                   Simple interface to Locale::Maketext::Lexicon
842
843       Locale::Maketext::TPJ13
844                   Article about software localization
845
846       MIME::Base64
847                   Encoding and decoding of base64 strings
848
849       MIME::QuotedPrint
850                   Encoding and decoding of quoted-printable strings
851
852       Math::BigFloat
853                   Arbitrary size floating point math package
854
855       Math::BigInt
856                   Arbitrary size integer math package
857
858       Math::BigInt::Calc
859                   Pure Perl module to support Math::BigInt
860
861       Math::BigInt::FastCalc
862                   Math::BigInt::Calc with some XS for more speed
863
864       Math::BigInt::Lib
865                   Virtual parent class for Math::BigInt libraries
866
867       Math::BigRat
868                   Arbitrary size rational number math package
869
870       Math::Complex
871                   Complex numbers and associated mathematical functions
872
873       Math::Trig  Trigonometric functions
874
875       Memoize     Make functions faster by trading space for time
876
877       Memoize::AnyDBM_File
878                   Glue to provide EXISTS for AnyDBM_File for Storable use
879
880       Memoize::Expire
881                   Plug-in module for automatic expiration of memoized values
882
883       Memoize::NDBM_File
884                   Glue to provide EXISTS for NDBM_File for Storable use
885
886       Memoize::SDBM_File
887                   DEPRECATED compability shim
888
889       Memoize::Storable
890                   Store Memoized data in Storable database
891
892       Module::CoreList
893                   What modules shipped with versions of perl
894
895       Module::CoreList::Utils
896                   What utilities shipped with versions of perl
897
898       Module::Load
899                   Runtime require of both modules and files
900
901       Module::Load::Conditional
902                   Looking up module information / loading at runtime
903
904       Module::Loaded
905                   Mark modules as loaded or unloaded
906
907       Module::Metadata
908                   Gather package and POD information from perl module files
909
910       NDBM_File   Tied access to ndbm files
911
912       NEXT        Provide a pseudo-class NEXT (et al) that allows method
913                   redispatch
914
915       Net::Cmd    Network Command class (as used by FTP, SMTP etc)
916
917       Net::Config Local configuration data for libnet
918
919       Net::Domain Attempt to evaluate the current host's internet name and
920                   domain
921
922       Net::FTP    FTP Client class
923
924       Net::FTP::dataconn
925                   FTP Client data connection class
926
927       Net::NNTP   NNTP Client class
928
929       Net::Netrc  OO interface to users netrc file
930
931       Net::POP3   Post Office Protocol 3 Client class (RFC1939)
932
933       Net::Ping   Check a remote host for reachability
934
935       Net::SMTP   Simple Mail Transfer Protocol Client
936
937       Net::Time   Time and daytime network client interface
938
939       Net::hostent
940                   By-name interface to Perl's built-in gethost*() functions
941
942       Net::libnetFAQ
943                   Libnet Frequently Asked Questions
944
945       Net::netent By-name interface to Perl's built-in getnet*() functions
946
947       Net::protoent
948                   By-name interface to Perl's built-in getproto*() functions
949
950       Net::servent
951                   By-name interface to Perl's built-in getserv*() functions
952
953       O           Generic interface to Perl Compiler backends
954
955       ODBM_File   Tied access to odbm files
956
957       Opcode      Disable named opcodes when compiling perl code
958
959       POSIX       Perl interface to IEEE Std 1003.1
960
961       Params::Check
962                   A generic input parsing/checking mechanism.
963
964       Parse::CPAN::Meta
965                   Parse META.yml and META.json CPAN metadata files
966
967       Perl::OSType
968                   Map Perl operating system names to generic types
969
970       PerlIO      On demand loader for PerlIO layers and root of PerlIO::*
971                   name space
972
973       PerlIO::encoding
974                   Encoding layer
975
976       PerlIO::mmap
977                   Memory mapped IO
978
979       PerlIO::scalar
980                   In-memory IO, scalar IO
981
982       PerlIO::via Helper class for PerlIO layers implemented in perl
983
984       PerlIO::via::QuotedPrint
985                   PerlIO layer for quoted-printable strings
986
987       Pod::Checker
988                   Check pod documents for syntax errors
989
990       Pod::Escapes
991                   For resolving Pod E<...> sequences
992
993       Pod::Functions
994                   Group Perl's functions a la perlfunc.pod
995
996       Pod::Html   Module to convert pod files to HTML
997
998       Pod::Html::Util
999                   Helper functions for Pod-Html
1000
1001       Pod::Man    Convert POD data to formatted *roff input
1002
1003       Pod::ParseLink
1004                   Parse an L<> formatting code in POD text
1005
1006       Pod::Perldoc
1007                   Look up Perl documentation in Pod format.
1008
1009       Pod::Perldoc::BaseTo
1010                   Base for Pod::Perldoc formatters
1011
1012       Pod::Perldoc::GetOptsOO
1013                   Customized option parser for Pod::Perldoc
1014
1015       Pod::Perldoc::ToANSI
1016                   Render Pod with ANSI color escapes
1017
1018       Pod::Perldoc::ToChecker
1019                   Let Perldoc check Pod for errors
1020
1021       Pod::Perldoc::ToMan
1022                   Let Perldoc render Pod as man pages
1023
1024       Pod::Perldoc::ToNroff
1025                   Let Perldoc convert Pod to nroff
1026
1027       Pod::Perldoc::ToPod
1028                   Let Perldoc render Pod as ... Pod!
1029
1030       Pod::Perldoc::ToRtf
1031                   Let Perldoc render Pod as RTF
1032
1033       Pod::Perldoc::ToTerm
1034                   Render Pod with terminal escapes
1035
1036       Pod::Perldoc::ToText
1037                   Let Perldoc render Pod as plaintext
1038
1039       Pod::Perldoc::ToTk
1040                   Let Perldoc use Tk::Pod to render Pod
1041
1042       Pod::Perldoc::ToXml
1043                   Let Perldoc render Pod as XML
1044
1045       Pod::Simple Framework for parsing Pod
1046
1047       Pod::Simple::Checker
1048                   Check the Pod syntax of a document
1049
1050       Pod::Simple::Debug
1051                   Put Pod::Simple into trace/debug mode
1052
1053       Pod::Simple::DumpAsText
1054                   Dump Pod-parsing events as text
1055
1056       Pod::Simple::DumpAsXML
1057                   Turn Pod into XML
1058
1059       Pod::Simple::HTML
1060                   Convert Pod to HTML
1061
1062       Pod::Simple::HTMLBatch
1063                   Convert several Pod files to several HTML files
1064
1065       Pod::Simple::JustPod
1066                   Just the Pod, the whole Pod, and nothing but the Pod
1067
1068       Pod::Simple::LinkSection
1069                   Represent "section" attributes of L codes
1070
1071       Pod::Simple::Methody
1072                   Turn Pod::Simple events into method calls
1073
1074       Pod::Simple::PullParser
1075                   A pull-parser interface to parsing Pod
1076
1077       Pod::Simple::PullParserEndToken
1078                   End-tokens from Pod::Simple::PullParser
1079
1080       Pod::Simple::PullParserStartToken
1081                   Start-tokens from Pod::Simple::PullParser
1082
1083       Pod::Simple::PullParserTextToken
1084                   Text-tokens from Pod::Simple::PullParser
1085
1086       Pod::Simple::PullParserToken
1087                   Tokens from Pod::Simple::PullParser
1088
1089       Pod::Simple::RTF
1090                   Format Pod as RTF
1091
1092       Pod::Simple::Search
1093                   Find POD documents in directory trees
1094
1095       Pod::Simple::SimpleTree
1096                   Parse Pod into a simple parse tree
1097
1098       Pod::Simple::Subclassing
1099                   Write a formatter as a Pod::Simple subclass
1100
1101       Pod::Simple::Text
1102                   Format Pod as plaintext
1103
1104       Pod::Simple::TextContent
1105                   Get the text content of Pod
1106
1107       Pod::Simple::XHTML
1108                   Format Pod as validating XHTML
1109
1110       Pod::Simple::XMLOutStream
1111                   Turn Pod into XML
1112
1113       Pod::Text   Convert POD data to formatted text
1114
1115       Pod::Text::Color
1116                   Convert POD data to formatted color ASCII text
1117
1118       Pod::Text::Overstrike
1119                   Convert POD data to formatted overstrike text
1120
1121       Pod::Text::Termcap
1122                   Convert POD data to ASCII text with format escapes
1123
1124       Pod::Usage  Extracts POD documentation and shows usage information
1125
1126       SDBM_File   Tied access to sdbm files
1127
1128       Safe        Compile and execute code in restricted compartments
1129
1130       Scalar::Util
1131                   A selection of general-utility scalar subroutines
1132
1133       Search::Dict
1134                   Look - search for key in dictionary file
1135
1136       SelectSaver Save and restore selected file handle
1137
1138       SelfLoader  Load functions only on demand
1139
1140       Storable    Persistence for Perl data structures
1141
1142       Sub::Util   A selection of utility subroutines for subs and CODE
1143                   references
1144
1145       Symbol      Manipulate Perl symbols and their names
1146
1147       Sys::Hostname
1148                   Try every conceivable way to get hostname
1149
1150       Sys::Syslog Perl interface to the UNIX syslog(3) calls
1151
1152       Sys::Syslog::Win32
1153                   Win32 support for Sys::Syslog
1154
1155       TAP::Base   Base class that provides common functionality to
1156                   TAP::Parser
1157
1158       TAP::Formatter::Base
1159                   Base class for harness output delegates
1160
1161       TAP::Formatter::Color
1162                   Run Perl test scripts with color
1163
1164       TAP::Formatter::Console
1165                   Harness output delegate for default console output
1166
1167       TAP::Formatter::Console::ParallelSession
1168                   Harness output delegate for parallel console output
1169
1170       TAP::Formatter::Console::Session
1171                   Harness output delegate for default console output
1172
1173       TAP::Formatter::File
1174                   Harness output delegate for file output
1175
1176       TAP::Formatter::File::Session
1177                   Harness output delegate for file output
1178
1179       TAP::Formatter::Session
1180                   Abstract base class for harness output delegate
1181
1182       TAP::Harness
1183                   Run test scripts with statistics
1184
1185       TAP::Harness::Env
1186                   Parsing harness related environmental variables where
1187                   appropriate
1188
1189       TAP::Object Base class that provides common functionality to all
1190                   "TAP::*" modules
1191
1192       TAP::Parser Parse TAP output
1193
1194       TAP::Parser::Aggregator
1195                   Aggregate TAP::Parser results
1196
1197       TAP::Parser::Grammar
1198                   A grammar for the Test Anything Protocol.
1199
1200       TAP::Parser::Iterator
1201                   Base class for TAP source iterators
1202
1203       TAP::Parser::Iterator::Array
1204                   Iterator for array-based TAP sources
1205
1206       TAP::Parser::Iterator::Process
1207                   Iterator for process-based TAP sources
1208
1209       TAP::Parser::Iterator::Stream
1210                   Iterator for filehandle-based TAP sources
1211
1212       TAP::Parser::IteratorFactory
1213                   Figures out which SourceHandler objects to use for a given
1214                   Source
1215
1216       TAP::Parser::Multiplexer
1217                   Multiplex multiple TAP::Parsers
1218
1219       TAP::Parser::Result
1220                   Base class for TAP::Parser output objects
1221
1222       TAP::Parser::Result::Bailout
1223                   Bailout result token.
1224
1225       TAP::Parser::Result::Comment
1226                   Comment result token.
1227
1228       TAP::Parser::Result::Plan
1229                   Plan result token.
1230
1231       TAP::Parser::Result::Pragma
1232                   TAP pragma token.
1233
1234       TAP::Parser::Result::Test
1235                   Test result token.
1236
1237       TAP::Parser::Result::Unknown
1238                   Unknown result token.
1239
1240       TAP::Parser::Result::Version
1241                   TAP syntax version token.
1242
1243       TAP::Parser::Result::YAML
1244                   YAML result token.
1245
1246       TAP::Parser::ResultFactory
1247                   Factory for creating TAP::Parser output objects
1248
1249       TAP::Parser::Scheduler
1250                   Schedule tests during parallel testing
1251
1252       TAP::Parser::Scheduler::Job
1253                   A single testing job.
1254
1255       TAP::Parser::Scheduler::Spinner
1256                   A no-op job.
1257
1258       TAP::Parser::Source
1259                   A TAP source & meta data about it
1260
1261       TAP::Parser::SourceHandler
1262                   Base class for different TAP source handlers
1263
1264       TAP::Parser::SourceHandler::Executable
1265                   Stream output from an executable TAP source
1266
1267       TAP::Parser::SourceHandler::File
1268                   Stream TAP from a text file.
1269
1270       TAP::Parser::SourceHandler::Handle
1271                   Stream TAP from an IO::Handle or a GLOB.
1272
1273       TAP::Parser::SourceHandler::Perl
1274                   Stream TAP from a Perl executable
1275
1276       TAP::Parser::SourceHandler::RawTAP
1277                   Stream output from raw TAP in a scalar/array ref.
1278
1279       TAP::Parser::YAMLish::Reader
1280                   Read YAMLish data from iterator
1281
1282       TAP::Parser::YAMLish::Writer
1283                   Write YAMLish data
1284
1285       Term::ANSIColor
1286                   Color screen output using ANSI escape sequences
1287
1288       Term::Cap   Perl termcap interface
1289
1290       Term::Complete
1291                   Perl word completion module
1292
1293       Term::ReadLine
1294                   Perl interface to various "readline" packages.
1295
1296       Test        Provides a simple framework for writing test scripts
1297
1298       Test2       Framework for writing test tools that all work together.
1299
1300       Test2::API  Primary interface for writing Test2 based testing tools.
1301
1302       Test2::API::Breakage
1303                   What breaks at what version
1304
1305       Test2::API::Context
1306                   Object to represent a testing context.
1307
1308       Test2::API::Instance
1309                   Object used by Test2::API under the hood
1310
1311       Test2::API::InterceptResult
1312                   Representation of a list of events.
1313
1314       Test2::API::InterceptResult::Event
1315                   Representation of an event for use in
1316
1317       Test2::API::InterceptResult::Hub
1318                   Hub used by InterceptResult.
1319
1320       Test2::API::InterceptResult::Squasher
1321                   Encapsulation of the algorithm that
1322
1323       Test2::API::Stack
1324                   Object to manage a stack of Test2::Hub
1325
1326       Test2::Event
1327                   Base class for events
1328
1329       Test2::Event::Bail
1330                   Bailout!
1331
1332       Test2::Event::Diag
1333                   Diag event type
1334
1335       Test2::Event::Encoding
1336                   Set the encoding for the output stream
1337
1338       Test2::Event::Exception
1339                   Exception event
1340
1341       Test2::Event::Fail
1342                   Event for a simple failed assertion
1343
1344       Test2::Event::Generic
1345                   Generic event type.
1346
1347       Test2::Event::Note
1348                   Note event type
1349
1350       Test2::Event::Ok
1351                   Ok event type
1352
1353       Test2::Event::Pass
1354                   Event for a simple passing assertion
1355
1356       Test2::Event::Plan
1357                   The event of a plan
1358
1359       Test2::Event::Skip
1360                   Skip event type
1361
1362       Test2::Event::Subtest
1363                   Event for subtest types
1364
1365       Test2::Event::TAP::Version
1366                   Event for TAP version.
1367
1368       Test2::Event::V2
1369                   Second generation event.
1370
1371       Test2::Event::Waiting
1372                   Tell all procs/threads it is time to be done
1373
1374       Test2::EventFacet
1375                   Base class for all event facets.
1376
1377       Test2::EventFacet::About
1378                   Facet with event details.
1379
1380       Test2::EventFacet::Amnesty
1381                   Facet for assertion amnesty.
1382
1383       Test2::EventFacet::Assert
1384                   Facet representing an assertion.
1385
1386       Test2::EventFacet::Control
1387                   Facet for hub actions and behaviors.
1388
1389       Test2::EventFacet::Error
1390                   Facet for errors that need to be shown.
1391
1392       Test2::EventFacet::Hub
1393                   Facet for the hubs an event passes through.
1394
1395       Test2::EventFacet::Info
1396                   Facet for information a developer might care about.
1397
1398       Test2::EventFacet::Info::Table
1399                   Intermediary representation of a table.
1400
1401       Test2::EventFacet::Meta
1402                   Facet for meta-data
1403
1404       Test2::EventFacet::Parent
1405                   Facet for events contains other events
1406
1407       Test2::EventFacet::Plan
1408                   Facet for setting the plan
1409
1410       Test2::EventFacet::Render
1411                   Facet that dictates how to render an event.
1412
1413       Test2::EventFacet::Trace
1414                   Debug information for events
1415
1416       Test2::Formatter
1417                   Namespace for formatters.
1418
1419       Test2::Formatter::TAP
1420                   Standard TAP formatter
1421
1422       Test2::Hub  The conduit through which all events flow.
1423
1424       Test2::Hub::Interceptor
1425                   Hub used by interceptor to grab results.
1426
1427       Test2::Hub::Interceptor::Terminator
1428                   Exception class used by
1429
1430       Test2::Hub::Subtest
1431                   Hub used by subtests
1432
1433       Test2::IPC  Turn on IPC for threading or forking support.
1434
1435       Test2::IPC::Driver
1436                   Base class for Test2 IPC drivers.
1437
1438       Test2::IPC::Driver::Files
1439                   Temp dir + Files concurrency model.
1440
1441       Test2::Tools::Tiny
1442                   Tiny set of tools for unfortunate souls who cannot use
1443
1444       Test2::Transition
1445                   Transition notes when upgrading to Test2
1446
1447       Test2::Util Tools used by Test2 and friends.
1448
1449       Test2::Util::ExternalMeta
1450                   Allow third party tools to safely attach meta-data
1451
1452       Test2::Util::Facets2Legacy
1453                   Convert facet data to the legacy event API.
1454
1455       Test2::Util::HashBase
1456                   Build hash based classes.
1457
1458       Test2::Util::Trace
1459                   Legacy wrapper fro Test2::EventFacet::Trace.
1460
1461       Test::Builder
1462                   Backend for building test libraries
1463
1464       Test::Builder::Formatter
1465                   Test::Builder subclass of Test2::Formatter::TAP
1466
1467       Test::Builder::IO::Scalar
1468                   A copy of IO::Scalar for Test::Builder
1469
1470       Test::Builder::Module
1471                   Base class for test modules
1472
1473       Test::Builder::Tester
1474                   Test testsuites that have been built with
1475
1476       Test::Builder::Tester::Color
1477                   Turn on colour in Test::Builder::Tester
1478
1479       Test::Builder::TodoDiag
1480                   Test::Builder subclass of Test2::Event::Diag
1481
1482       Test::Harness
1483                   Run Perl standard test scripts with statistics
1484
1485       Test::Harness::Beyond
1486                   Beyond make test
1487
1488       Test::More  Yet another framework for writing test scripts
1489
1490       Test::Simple
1491                   Basic utilities for writing tests.
1492
1493       Test::Tester
1494                   Ease testing test modules built with Test::Builder
1495
1496       Test::Tester::Capture
1497                   Help testing test modules built with Test::Builder
1498
1499       Test::Tester::CaptureRunner
1500                   Help testing test modules built with Test::Builder
1501
1502       Test::Tutorial
1503                   A tutorial about writing really basic tests
1504
1505       Test::use::ok
1506                   Alternative to Test::More::use_ok
1507
1508       Text::Abbrev
1509                   Abbrev - create an abbreviation table from a list
1510
1511       Text::Balanced
1512                   Extract delimited text sequences from strings.
1513
1514       Text::ParseWords
1515                   Parse text into an array of tokens or array of arrays
1516
1517       Text::Tabs  Expand and unexpand tabs like unix expand(1) and
1518                   unexpand(1)
1519
1520       Text::Wrap  Line wrapping to form simple paragraphs
1521
1522       Thread      Manipulate threads in Perl (for old code only)
1523
1524       Thread::Queue
1525                   Thread-safe queues
1526
1527       Thread::Semaphore
1528                   Thread-safe semaphores
1529
1530       Tie::Array  Base class for tied arrays
1531
1532       Tie::File   Access the lines of a disk file via a Perl array
1533
1534       Tie::Handle Base class definitions for tied handles
1535
1536       Tie::Hash   Base class definitions for tied hashes
1537
1538       Tie::Hash::NamedCapture
1539                   Named regexp capture buffers
1540
1541       Tie::Memoize
1542                   Add data to hash when needed
1543
1544       Tie::RefHash
1545                   Use references as hash keys
1546
1547       Tie::Scalar Base class definitions for tied scalars
1548
1549       Tie::StdHandle
1550                   Base class definitions for tied handles
1551
1552       Tie::SubstrHash
1553                   Fixed-table-size, fixed-key-length hashing
1554
1555       Time::HiRes High resolution alarm, sleep, gettimeofday, interval timers
1556
1557       Time::Local Efficiently compute time from local and GMT time
1558
1559       Time::Piece Object Oriented time objects
1560
1561       Time::Seconds
1562                   A simple API to convert seconds to other date values
1563
1564       Time::gmtime
1565                   By-name interface to Perl's built-in gmtime() function
1566
1567       Time::localtime
1568                   By-name interface to Perl's built-in localtime() function
1569
1570       Time::tm    Internal object used by Time::gmtime and Time::localtime
1571
1572       UNIVERSAL   Base class for ALL classes (blessed references)
1573
1574       Unicode::Collate
1575                   Unicode Collation Algorithm
1576
1577       Unicode::Collate::CJK::Big5
1578                   Weighting CJK Unified Ideographs
1579
1580       Unicode::Collate::CJK::GB2312
1581                   Weighting CJK Unified Ideographs
1582
1583       Unicode::Collate::CJK::JISX0208
1584                   Weighting JIS KANJI for Unicode::Collate
1585
1586       Unicode::Collate::CJK::Korean
1587                   Weighting CJK Unified Ideographs
1588
1589       Unicode::Collate::CJK::Pinyin
1590                   Weighting CJK Unified Ideographs
1591
1592       Unicode::Collate::CJK::Stroke
1593                   Weighting CJK Unified Ideographs
1594
1595       Unicode::Collate::CJK::Zhuyin
1596                   Weighting CJK Unified Ideographs
1597
1598       Unicode::Collate::Locale
1599                   Linguistic tailoring for DUCET via Unicode::Collate
1600
1601       Unicode::Normalize
1602                   Unicode Normalization Forms
1603
1604       Unicode::UCD
1605                   Unicode character database
1606
1607       User::grent By-name interface to Perl's built-in getgr*() functions
1608
1609       User::pwent By-name interface to Perl's built-in getpw*() functions
1610
1611       VMS::DCLsym Perl extension to manipulate DCL symbols
1612
1613       VMS::Filespec
1614                   Convert between VMS and Unix file specification syntax
1615
1616       VMS::Stdio  Standard I/O functions via VMS extensions
1617
1618       Win32       Interfaces to some Win32 API Functions
1619
1620       Win32API::File
1621                   Low-level access to Win32 system API calls for files/dirs.
1622
1623       Win32CORE   Win32 CORE function stubs
1624
1625       XS::APItest Test the perl C API
1626
1627       XS::Typemap Module to test the XS typemaps distributed with perl
1628
1629       XSLoader    Dynamically load C libraries into Perl code
1630
1631       autodie::Scope::Guard
1632                   Wrapper class for calling subs at end of scope
1633
1634       autodie::Scope::GuardStack
1635                   Hook stack for managing scopes via %^H
1636
1637       autodie::Util
1638                   Internal Utility subroutines for autodie and Fatal
1639
1640       version::Internals
1641                   Perl extension for Version Objects
1642
1643       To find out all modules installed on your system, including those
1644       without documentation or outside the standard release, just use the
1645       following command (under the default win32 shell, double quotes should
1646       be used instead of single quotes).
1647
1648           % perl -MFile::Find=find -MFile::Spec::Functions -Tlwe \
1649             'find { wanted => sub { print canonpath $_ if /\.pm\z/ },
1650             no_chdir => 1 }, @INC'
1651
1652       (The -T is here to prevent @INC from being populated by "PERL5LIB",
1653       "PERLLIB", and "PERL_USE_UNSAFE_INC".)  They should all have their own
1654       documentation installed and accessible via your system man(1) command.
1655       If you do not have a find program, you can use the Perl find2perl
1656       program instead, which generates Perl code as output you can run
1657       through perl.  If you have a man program but it doesn't find your
1658       modules, you'll have to fix your manpath.  See perl for details.  If
1659       you have no system man command, you might try the perldoc program.
1660
1661       Note also that the command "perldoc perllocal" gives you a (possibly
1662       incomplete) list of the modules that have been further installed on
1663       your system. (The perllocal.pod file is updated by the standard
1664       MakeMaker install process.)
1665
1666   Extension Modules
1667       Extension modules are written in C (or a mix of Perl and C).  They are
1668       usually dynamically loaded into Perl if and when you need them, but may
1669       also be linked in statically.  Supported extension modules include
1670       Socket, Fcntl, and POSIX.
1671
1672       Many popular C extension modules do not come bundled (at least, not
1673       completely) due to their sizes, volatility, or simply lack of time for
1674       adequate testing and configuration across the multitude of platforms on
1675       which Perl was beta-tested.  You are encouraged to look for them on
1676       CPAN (described below), or using web search engines like Google or
1677       DuckDuckGo.
1678

CPAN

1680       CPAN stands for Comprehensive Perl Archive Network; it's a globally
1681       replicated trove of Perl materials, including documentation, style
1682       guides, tricks and traps, alternate ports to non-Unix systems and
1683       occasional binary distributions for these.   Search engines for CPAN
1684       can be found at https://www.cpan.org/
1685
1686       Most importantly, CPAN includes around a thousand unbundled modules,
1687       some of which require a C compiler to build.  Major categories of
1688       modules are:
1689
1690       •   Language Extensions and Documentation Tools
1691
1692       •   Development Support
1693
1694       •   Operating System Interfaces
1695
1696       •   Networking, Device Control (modems) and InterProcess Communication
1697
1698       •   Data Types and Data Type Utilities
1699
1700       •   Database Interfaces
1701
1702       •   User Interfaces
1703
1704       •   Interfaces to / Emulations of Other Programming Languages
1705
1706       •   File Names, File Systems and File Locking (see also File Handles)
1707
1708       •   String Processing, Language Text Processing, Parsing, and Searching
1709
1710       •   Option, Argument, Parameter, and Configuration File Processing
1711
1712       •   Internationalization and Locale
1713
1714       •   Authentication, Security, and Encryption
1715
1716       •   World Wide Web, HTML, HTTP, CGI, MIME
1717
1718       •   Server and Daemon Utilities
1719
1720       •   Archiving and Compression
1721
1722       •   Images, Pixmap and Bitmap Manipulation, Drawing, and Graphing
1723
1724       •   Mail and Usenet News
1725
1726       •   Control Flow Utilities (callbacks and exceptions etc)
1727
1728       •   File Handle and Input/Output Stream Utilities
1729
1730       •   Miscellaneous Modules
1731
1732       You can find the CPAN online at <https://www.cpan.org/>
1733

Modules: Creation, Use, and Abuse

1735       (The following section is borrowed directly from Tim Bunce's modules
1736       file, available at your nearest CPAN site.)
1737
1738       Perl implements a class using a package, but the presence of a package
1739       doesn't imply the presence of a class.  A package is just a namespace.
1740       A class is a package that provides subroutines that can be used as
1741       methods.  A method is just a subroutine that expects, as its first
1742       argument, either the name of a package (for "static" methods), or a
1743       reference to something (for "virtual" methods).
1744
1745       A module is a file that (by convention) provides a class of the same
1746       name (sans the .pm), plus an import method in that class that can be
1747       called to fetch exported symbols.  This module may implement some of
1748       its methods by loading dynamic C or C++ objects, but that should be
1749       totally transparent to the user of the module.  Likewise, the module
1750       might set up an AUTOLOAD function to slurp in subroutine definitions on
1751       demand, but this is also transparent.  Only the .pm file is required to
1752       exist.  See perlsub, perlobj, and AutoLoader for details about the
1753       AUTOLOAD mechanism.
1754
1755   Guidelines for Module Creation
1756       •   Do similar modules already exist in some form?
1757
1758           If so, please try to reuse the existing modules either in whole or
1759           by inheriting useful features into a new class.  If this is not
1760           practical try to get together with the module authors to work on
1761           extending or enhancing the functionality of the existing modules.
1762           A perfect example is the plethora of packages in perl4 for dealing
1763           with command line options.
1764
1765           If you are writing a module to expand an already existing set of
1766           modules, please coordinate with the author of the package.  It
1767           helps if you follow the same naming scheme and module interaction
1768           scheme as the original author.
1769
1770       •   Try to design the new module to be easy to extend and reuse.
1771
1772           Try to "use warnings;" (or "use warnings qw(...);").  Remember that
1773           you can add "no warnings qw(...);" to individual blocks of code
1774           that need less warnings.
1775
1776           Use blessed references.  Use the two argument form of bless to
1777           bless into the class name given as the first parameter of the
1778           constructor, e.g.,:
1779
1780            sub new {
1781                my $class = shift;
1782                return bless {}, $class;
1783            }
1784
1785           or even this if you'd like it to be used as either a static or a
1786           virtual method.
1787
1788            sub new {
1789                my $self  = shift;
1790                my $class = ref($self) || $self;
1791                return bless {}, $class;
1792            }
1793
1794           Pass arrays as references so more parameters can be added later
1795           (it's also faster).  Convert functions into methods where
1796           appropriate.  Split large methods into smaller more flexible ones.
1797           Inherit methods from other modules if appropriate.
1798
1799           Avoid class name tests like: "die "Invalid" unless ref $ref eq
1800           'FOO'".  Generally you can delete the "eq 'FOO'" part with no harm
1801           at all.  Let the objects look after themselves! Generally, avoid
1802           hard-wired class names as far as possible.
1803
1804           Avoid "$r->Class::func()" where using "@ISA=qw(... Class ...)" and
1805           "$r->func()" would work.
1806
1807           Use autosplit so little used or newly added functions won't be a
1808           burden to programs that don't use them. Add test functions to the
1809           module after __END__ either using AutoSplit or by saying:
1810
1811            eval join('',<main::DATA>) || die $@ unless caller();
1812
1813           Does your module pass the 'empty subclass' test? If you say
1814           "@SUBCLASS::ISA = qw(YOURCLASS);" your applications should be able
1815           to use SUBCLASS in exactly the same way as YOURCLASS.  For example,
1816           does your application still work if you change:  "$obj =
1817           YOURCLASS->new();" into: "$obj = SUBCLASS->new();" ?
1818
1819           Avoid keeping any state information in your packages. It makes it
1820           difficult for multiple other packages to use yours. Keep state
1821           information in objects.
1822
1823           Always use -w.
1824
1825           Try to "use strict;" (or "use strict qw(...);").  Remember that you
1826           can add "no strict qw(...);" to individual blocks of code that need
1827           less strictness.
1828
1829           Always use -w.
1830
1831           Follow the guidelines in perlstyle.
1832
1833           Always use -w.
1834
1835       •   Some simple style guidelines
1836
1837           The perlstyle manual supplied with Perl has many helpful points.
1838
1839           Coding style is a matter of personal taste. Many people evolve
1840           their style over several years as they learn what helps them write
1841           and maintain good code.  Here's one set of assorted suggestions
1842           that seem to be widely used by experienced developers:
1843
1844           Use underscores to separate words.  It is generally easier to read
1845           $var_names_like_this than $VarNamesLikeThis, especially for non-
1846           native speakers of English. It's also a simple rule that works
1847           consistently with VAR_NAMES_LIKE_THIS.
1848
1849           Package/Module names are an exception to this rule. Perl informally
1850           reserves lowercase module names for 'pragma' modules like integer
1851           and strict. Other modules normally begin with a capital letter and
1852           use mixed case with no underscores (need to be short and portable).
1853
1854           You may find it helpful to use letter case to indicate the scope or
1855           nature of a variable. For example:
1856
1857            $ALL_CAPS_HERE   constants only (beware clashes with Perl vars)
1858            $Some_Caps_Here  package-wide global/static
1859            $no_caps_here    function scope my() or local() variables
1860
1861           Function and method names seem to work best as all lowercase.
1862           e.g., "$obj->as_string()".
1863
1864           You can use a leading underscore to indicate that a variable or
1865           function should not be used outside the package that defined it.
1866
1867       •   Select what to export.
1868
1869           Do NOT export method names!
1870
1871           Do NOT export anything else by default without a good reason!
1872
1873           Exports pollute the namespace of the module user.  If you must
1874           export try to use @EXPORT_OK in preference to @EXPORT and avoid
1875           short or common names to reduce the risk of name clashes.
1876
1877           Generally anything not exported is still accessible from outside
1878           the module using the ModuleName::item_name (or
1879           "$blessed_ref->method") syntax.  By convention you can use a
1880           leading underscore on names to indicate informally that they are
1881           'internal' and not for public use.
1882
1883           (It is actually possible to get private functions by saying: "my
1884           $subref = sub { ... };  &$subref;".  But there's no way to call
1885           that directly as a method, because a method must have a name in the
1886           symbol table.)
1887
1888           As a general rule, if the module is trying to be object oriented
1889           then export nothing. If it's just a collection of functions then
1890           @EXPORT_OK anything but use @EXPORT with caution.
1891
1892       •   Select a name for the module.
1893
1894           This name should be as descriptive, accurate, and complete as
1895           possible.  Avoid any risk of ambiguity. Always try to use two or
1896           more whole words.  Generally the name should reflect what is
1897           special about what the module does rather than how it does it.
1898           Please use nested module names to group informally or categorize a
1899           module.  There should be a very good reason for a module not to
1900           have a nested name.  Module names should begin with a capital
1901           letter.
1902
1903           Having 57 modules all called Sort will not make life easy for
1904           anyone (though having 23 called Sort::Quick is only marginally
1905           better :-).  Imagine someone trying to install your module
1906           alongside many others.
1907
1908           If you are developing a suite of related modules/classes it's good
1909           practice to use nested classes with a common prefix as this will
1910           avoid namespace clashes. For example: Xyz::Control, Xyz::View,
1911           Xyz::Model etc. Use the modules in this list as a naming guide.
1912
1913           If adding a new module to a set, follow the original author's
1914           standards for naming modules and the interface to methods in those
1915           modules.
1916
1917           If developing modules for private internal or project specific use,
1918           that will never be released to the public, then you should ensure
1919           that their names will not clash with any future public module. You
1920           can do this either by using the reserved Local::* category or by
1921           using a category name that includes an underscore like Foo_Corp::*.
1922
1923           To be portable each component of a module name should be limited to
1924           11 characters. If it might be used on MS-DOS then try to ensure
1925           each is unique in the first 8 characters. Nested modules make this
1926           easier.
1927
1928           For additional guidance on the naming of modules, please consult:
1929
1930               https://pause.perl.org/pause/query?ACTION=pause_namingmodules
1931
1932           or send mail to the <module-authors@perl.org> mailing list.
1933
1934       •   Have you got it right?
1935
1936           How do you know that you've made the right decisions? Have you
1937           picked an interface design that will cause problems later? Have you
1938           picked the most appropriate name? Do you have any questions?
1939
1940           The best way to know for sure, and pick up many helpful
1941           suggestions, is to ask someone who knows. The
1942           <module-authors@perl.org> mailing list is useful for this purpose;
1943           it's also accessible via news interface as perl.module-authors at
1944           nntp.perl.org.
1945
1946           All you need to do is post a short summary of the module, its
1947           purpose and interfaces. A few lines on each of the main methods is
1948           probably enough. (If you post the whole module it might be ignored
1949           by busy people - generally the very people you want to read it!)
1950
1951           Don't worry about posting if you can't say when the module will be
1952           ready - just say so in the message. It might be worth inviting
1953           others to help you, they may be able to complete it for you!
1954
1955       •   README and other Additional Files.
1956
1957           It's well known that software developers usually fully document the
1958           software they write. If, however, the world is in urgent need of
1959           your software and there is not enough time to write the full
1960           documentation please at least provide a README file containing:
1961
1962           •         A description of the module/package/extension etc.
1963
1964           •         A copyright notice - see below.
1965
1966           •         Prerequisites - what else you may need to have.
1967
1968           •         How to build it - possible changes to Makefile.PL etc.
1969
1970           •         How to install it.
1971
1972           •         Recent changes in this release, especially
1973                     incompatibilities
1974
1975           •         Changes / enhancements you plan to make in the future.
1976
1977           If the README file seems to be getting too large you may wish to
1978           split out some of the sections into separate files: INSTALL,
1979           Copying, ToDo etc.
1980
1981           •   Adding a Copyright Notice.
1982
1983               How you choose to license your work is a personal decision.
1984               The general mechanism is to assert your Copyright and then make
1985               a declaration of how others may copy/use/modify your work.
1986
1987               Perl, for example, is supplied with two types of licence: The
1988               GNU GPL and The Artistic Licence (see the files README,
1989               Copying, and Artistic, or perlgpl and perlartistic).  Larry has
1990               good reasons for NOT just using the GNU GPL.
1991
1992               My personal recommendation, out of respect for Larry, Perl, and
1993               the Perl community at large is to state something simply like:
1994
1995                Copyright (c) 1995 Your Name. All rights reserved.
1996                This program is free software; you can redistribute it and/or
1997                modify it under the same terms as Perl itself.
1998
1999               This statement should at least appear in the README file. You
2000               may also wish to include it in a Copying file and your source
2001               files.  Remember to include the other words in addition to the
2002               Copyright.
2003
2004           •   Give the module a version/issue/release number.
2005
2006               To be fully compatible with the Exporter and MakeMaker modules
2007               you should store your module's version number in a non-my
2008               package variable called $VERSION.  This should be a positive
2009               floating point number with at least two digits after the
2010               decimal (i.e., hundredths, e.g, "$VERSION = "0.01"").  Don't
2011               use a "1.3.2" style version.  See Exporter for details.
2012
2013               It may be handy to add a function or method to retrieve the
2014               number.  Use the number in announcements and archive file names
2015               when releasing the module (ModuleName-1.02.tar.Z).  See perldoc
2016               ExtUtils::MakeMaker.pm for details.
2017
2018           •   How to release and distribute a module.
2019
2020               If possible, register the module with CPAN. Follow the
2021               instructions and links on:
2022
2023                  https://www.cpan.org/modules/04pause.html
2024
2025               and upload to:
2026
2027                  https://pause.perl.org/
2028
2029               and notify <modules@perl.org>. This will allow anyone to
2030               install your module using the "cpan" tool distributed with
2031               Perl.
2032
2033               By using the WWW interface you can ask the Upload Server to
2034               mirror your modules from your ftp or WWW site into your own
2035               directory on CPAN!
2036
2037           •   Take care when changing a released module.
2038
2039               Always strive to remain compatible with previous released
2040               versions.  Otherwise try to add a mechanism to revert to the
2041               old behavior if people rely on it.  Document incompatible
2042               changes.
2043
2044   Guidelines for Converting Perl 4 Library Scripts into Modules
2045       •   There is no requirement to convert anything.
2046
2047           If it ain't broke, don't fix it! Perl 4 library scripts should
2048           continue to work with no problems. You may need to make some minor
2049           changes (like escaping non-array @'s in double quoted strings) but
2050           there is no need to convert a .pl file into a Module for just that.
2051
2052       •   Consider the implications.
2053
2054           All Perl applications that make use of the script will need to be
2055           changed (slightly) if the script is converted into a module.  Is it
2056           worth it unless you plan to make other changes at the same time?
2057
2058       •   Make the most of the opportunity.
2059
2060           If you are going to convert the script to a module you can use the
2061           opportunity to redesign the interface.  The guidelines for module
2062           creation above include many of the issues you should consider.
2063
2064       •   The pl2pm utility will get you started.
2065
2066           This utility will read *.pl files (given as parameters) and write
2067           corresponding *.pm files. The pl2pm utilities does the following:
2068
2069           •         Adds the standard Module prologue lines
2070
2071           •         Converts package specifiers from ' to ::
2072
2073           •         Converts die(...) to croak(...)
2074
2075           •         Several other minor changes
2076
2077           Being a mechanical process pl2pm is not bullet proof. The converted
2078           code will need careful checking, especially any package statements.
2079           Don't delete the original .pl file till the new .pm one works!
2080
2081   Guidelines for Reusing Application Code
2082       •   Complete applications rarely belong in the Perl Module Library.
2083
2084       •   Many applications contain some Perl code that could be reused.
2085
2086           Help save the world! Share your code in a form that makes it easy
2087           to reuse.
2088
2089       •   Break-out the reusable code into one or more separate module files.
2090
2091       •   Take the opportunity to reconsider and redesign the interfaces.
2092
2093       •   In some cases the 'application' can then be reduced to a small
2094
2095           fragment of code built on top of the reusable modules. In these
2096           cases the application could invoked as:
2097
2098                % perl -e 'use Module::Name; method(@ARGV)' ...
2099           or
2100                % perl -mModule::Name ...    (in perl5.002 or higher)
2101

NOTE

2103       Perl does not enforce private and public parts of its modules as you
2104       may have been used to in other languages like C++, Ada, or Modula-17.
2105       Perl doesn't have an infatuation with enforced privacy.  It would
2106       prefer that you stayed out of its living room because you weren't
2107       invited, not because it has a shotgun.
2108
2109       The module and its user have a contract, part of which is common law,
2110       and part of which is "written".  Part of the common law contract is
2111       that a module doesn't pollute any namespace it wasn't asked to.  The
2112       written contract for the module (A.K.A. documentation) may make other
2113       provisions.  But then you know when you "use RedefineTheWorld" that
2114       you're redefining the world and willing to take the consequences.
2115
2116
2117
2118perl v5.38.2                      2023-11-30                     PERLMODLIB(1)
Impressum