summaryrefslogtreecommitdiff
path: root/Master/tlpkg/tlperl.straw/lib/pods/perlmodlib.pod
diff options
context:
space:
mode:
Diffstat (limited to 'Master/tlpkg/tlperl.straw/lib/pods/perlmodlib.pod')
-rwxr-xr-xMaster/tlpkg/tlperl.straw/lib/pods/perlmodlib.pod3430
1 files changed, 3430 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl.straw/lib/pods/perlmodlib.pod b/Master/tlpkg/tlperl.straw/lib/pods/perlmodlib.pod
new file mode 100755
index 00000000000..8f64058ffe3
--- /dev/null
+++ b/Master/tlpkg/tlperl.straw/lib/pods/perlmodlib.pod
@@ -0,0 +1,3430 @@
+=for maintainers
+Generated by perlmodlib.PL -- DO NOT EDIT!
+
+=head1 NAME
+
+perlmodlib - constructing new Perl modules and finding existing ones
+
+=head1 THE PERL MODULE LIBRARY
+
+Many modules are included in the Perl distribution. These are described
+below, and all end in F<.pm>. You may discover compiled library
+files (usually ending in F<.so>) or small pieces of modules to be
+autoloaded (ending in F<.al>); these were automatically generated
+by the installation process. You may also discover files in the
+library directory that end in either F<.pl> or F<.ph>. These are
+old libraries supplied so that old programs that use them still
+run. The F<.pl> files will all eventually be converted into standard
+modules, and the F<.ph> files made by B<h2ph> will probably end up
+as extension modules made by B<h2xs>. (Some F<.ph> values may
+already be available through the POSIX, Errno, or Fcntl modules.)
+The B<pl2pm> file in the distribution may help in your conversion,
+but it's just a mechanical process and therefore far from bulletproof.
+
+=head2 Pragmatic Modules
+
+They work somewhat like compiler directives (pragmata) in that they
+tend to affect the compilation of your program, and thus will usually
+work well only when used within a C<use>, or C<no>. Most of these
+are lexically scoped, so an inner BLOCK may countermand them
+by saying:
+
+ no integer;
+ no strict 'refs';
+ no warnings;
+
+which lasts until the end of that BLOCK.
+
+Some pragmas are lexically scoped--typically those that affect the
+C<$^H> hints variable. Others affect the current package instead,
+like C<use vars> and C<use subs>, which allow you to predeclare a
+variables or subroutines within a particular I<file> rather than
+just a block. Such declarations are effective for the entire file
+for which they were declared. You cannot rescind them with C<no
+vars> or C<no subs>.
+
+The following pragmas are defined (and have their own documentation).
+
+=over 12
+
+=item attributes
+
+Get/set subroutine or variable attributes
+
+=item attrs
+
+Set/get attributes of a subroutine (deprecated)
+
+=item autodie
+
+Replace functions with ones that succeed or die with lexical scope
+
+=item autodie::exception
+
+Exceptions from autodying functions.
+
+=item autodie::exception::system
+
+Exceptions from autodying system().
+
+=item autodie::hints
+
+Provide hints about user subroutines to autodie
+
+=item autouse
+
+Postpone load of modules until a function is used
+
+=item base
+
+Establish an ISA relationship with base classes at compile time
+
+=item bigint
+
+Transparent BigInteger support for Perl
+
+=item bignum
+
+Transparent BigNumber support for Perl
+
+=item bigrat
+
+Transparent BigNumber/BigRational support for Perl
+
+=item blib
+
+Use MakeMaker's uninstalled version of a package
+
+=item bytes
+
+Force byte semantics rather than character semantics
+
+=item charnames
+
+Define character names for C<\N{named}> string literal escapes
+
+=item constant
+
+Declare constants
+
+=item diagnostics
+
+Produce verbose warning diagnostics
+
+=item encoding
+
+Allows you to write your script in non-ascii or non-utf8
+
+=item encoding::warnings
+
+Warn on implicit encoding conversions
+
+=item feature
+
+Enable new syntactic features
+
+=item fields
+
+Compile-time class fields
+
+=item filetest
+
+Control the filetest permission operators
+
+=item if
+
+C<use> a Perl module if a condition holds
+
+=item integer
+
+Use integer arithmetic instead of floating point
+
+=item less
+
+Request less of something
+
+=item lib
+
+Manipulate @INC at compile time
+
+=item locale
+
+Use and avoid POSIX locales for built-in operations
+
+=item mro
+
+Method Resolution Order
+
+=item open
+
+Set default PerlIO layers for input and output
+
+=item ops
+
+Restrict unsafe operations when compiling
+
+=item overload
+
+Package for overloading Perl operations
+
+=item overloading
+
+Lexically control overloading
+
+=item parent
+
+Establish an ISA relationship with base classes at compile time
+
+=item re
+
+Alter regular expression behaviour
+
+=item sigtrap
+
+Enable simple signal handling
+
+=item sort
+
+Control sort() behaviour
+
+=item strict
+
+Restrict unsafe constructs
+
+=item subs
+
+Predeclare sub names
+
+=item threads
+
+Perl interpreter-based threads
+
+=item threads::shared
+
+Perl extension for sharing data structures between threads
+
+=item utf8
+
+Enable/disable UTF-8 (or UTF-EBCDIC) in source code
+
+=item vars
+
+Predeclare global variable names (obsolete)
+
+=item version
+
+Perl extension for Version Objects
+
+=item vmsish
+
+Control VMS-specific language features
+
+=item warnings
+
+Control optional warnings
+
+=item warnings::register
+
+Warnings import function
+
+=back
+
+=head2 Standard Modules
+
+Standard, bundled modules are all expected to behave in a well-defined
+manner with respect to namespace pollution because they use the
+Exporter module. See their own documentation for details.
+
+It's possible that not all modules listed below are installed on your
+system. For example, the GDBM_File module will not be installed if you
+don't have the gdbm library.
+
+=over 12
+
+=item AnyDBM_File
+
+Provide framework for multiple DBMs
+
+=item App::Prove
+
+Implements the C<prove> command.
+
+=item App::Prove::State
+
+State storage for the C<prove> command.
+
+=item App::Prove::State::Result
+
+Individual test suite results.
+
+=item App::Prove::State::Result::Test
+
+Individual test results.
+
+=item Archive::Extract
+
+A generic archive extracting mechanism
+
+=item Archive::Tar
+
+Module for manipulations of tar archives
+
+=item Archive::Tar::File
+
+A subclass for in-memory extracted file from Archive::Tar
+
+=item Attribute::Handlers
+
+Simpler definition of attribute handlers
+
+=item AutoLoader
+
+Load subroutines only on demand
+
+=item AutoSplit
+
+Split a package for autoloading
+
+=item B
+
+The Perl Compiler
+
+=item B::Concise
+
+Walk Perl syntax tree, printing concise info about ops
+
+=item B::Debug
+
+Walk Perl syntax tree, printing debug info about ops
+
+=item B::Deparse
+
+Perl compiler backend to produce perl code
+
+=item B::Lint
+
+Perl lint
+
+=item B::Lint::Debug
+
+Adds debugging stringification to B::
+
+=item B::Showlex
+
+Show lexical variables used in functions or files
+
+=item B::Terse
+
+Walk Perl syntax tree, printing terse info about ops
+
+=item B::Xref
+
+Generates cross reference reports for Perl programs
+
+=item Benchmark
+
+Benchmark running times of Perl code
+
+=item CGI
+
+Handle Common Gateway Interface requests and responses
+
+=item CGI::Apache
+
+Backward compatibility module for CGI.pm
+
+=item CGI::Carp
+
+CGI routines for writing to the HTTPD (or other) error log
+
+=item CGI::Cookie
+
+Interface to Netscape Cookies
+
+=item CGI::Fast
+
+CGI Interface for Fast CGI
+
+=item CGI::Pretty
+
+Module to produce nicely formatted HTML code
+
+=item CGI::Push
+
+Simple Interface to Server Push
+
+=item CGI::Switch
+
+Backward compatibility module for defunct CGI::Switch
+
+=item CGI::Util
+
+Internal utilities used by CGI module
+
+=item CORE
+
+Pseudo-namespace for Perl's core routines
+
+=item CPAN
+
+Query, download and build perl modules from CPAN sites
+
+=item CPAN::API::HOWTO
+
+A recipe book for programming with CPAN.pm
+
+=item CPAN::Distroprefs
+
+Read and match distroprefs
+
+=item CPAN::FirstTime
+
+Utility for CPAN::Config file Initialization
+
+=item CPAN::Kwalify
+
+Interface between CPAN.pm and Kwalify.pm
+
+=item CPAN::Nox
+
+Wrapper around CPAN.pm without using any XS module
+
+=item CPAN::Version
+
+Utility functions to compare CPAN versions
+
+=item CPANPLUS
+
+API & CLI access to the CPAN mirrors
+
+=item CPANPLUS::Dist::Base
+
+Base class for custom distribution classes
+
+=item CPANPLUS::Dist::Build
+
+CPANPLUS plugin to install packages that use Build.PL
+
+=item CPANPLUS::Dist::Build::Constants
+
+Constants for CPANPLUS::Dist::Build
+
+=item CPANPLUS::Dist::Sample
+
+Sample code to create your own Dist::* plugin
+
+=item CPANPLUS::Internals::Source::Memory
+
+In memory implementation
+
+=item CPANPLUS::Internals::Source::SQLite
+
+SQLite implementation
+
+=item CPANPLUS::Shell::Classic
+
+CPAN.pm emulation for CPANPLUS
+
+=item CPANPLUS::Shell::Default::Plugins::HOWTO
+
+Documentation on how to write your own plugins
+
+=item Carp
+
+Warn of errors (from perspective of caller)
+
+=item Carp::Heavy
+
+Heavy machinery, no user serviceable parts inside
+
+=item Class::ISA
+
+Report the search path for a class's ISA tree
+
+=item Class::Struct
+
+Declare struct-like datatypes as Perl classes
+
+=item Compress::Raw::Bzip2
+
+Low-Level Interface to bzip2 compression library
+
+=item Compress::Raw::Bzip2::FAQ
+
+Frequently Asked Questions about Compress::Raw::Bzip2
+
+=item Compress::Raw::Zlib
+
+Low-Level Interface to zlib compression library
+
+=item Compress::Raw::Zlib::FAQ
+
+Frequently Asked Questions about Compress::Raw::Zlib
+
+=item Compress::Zlib
+
+Interface to zlib compression library
+
+=item Config
+
+Access Perl configuration information
+
+=item Cwd
+
+Get pathname of current working directory
+
+=item DB
+
+Programmatic interface to the Perl debugging API
+
+=item DBM_Filter
+
+Filter DBM keys/values
+
+=item DBM_Filter::compress
+
+Filter for DBM_Filter
+
+=item DBM_Filter::encode
+
+Filter for DBM_Filter
+
+=item DBM_Filter::int32
+
+Filter for DBM_Filter
+
+=item DBM_Filter::null
+
+Filter for DBM_Filter
+
+=item DBM_Filter::utf8
+
+Filter for DBM_Filter
+
+=item DB_File
+
+Perl5 access to Berkeley DB version 1.x
+
+=item Data::Dumper
+
+Stringified perl data structures, suitable for both printing and C<eval>
+
+=item Devel::DProf
+
+A Perl code profiler
+
+=item Devel::InnerPackage
+
+Find all the inner packages of a package
+
+=item Devel::PPPort
+
+Perl/Pollution/Portability
+
+=item Devel::Peek
+
+A data debugging tool for the XS programmer
+
+=item Devel::SelfStubber
+
+Generate stubs for a SelfLoading module
+
+=item Digest
+
+Modules that calculate message digests
+
+=item Digest::MD5
+
+Perl interface to the MD5 Algorithm
+
+=item Digest::SHA
+
+Perl extension for SHA-1/224/256/384/512
+
+=item Digest::base
+
+Digest base class
+
+=item Digest::file
+
+Calculate digests of files
+
+=item DirHandle
+
+Supply object methods for directory handles
+
+=item Dumpvalue
+
+Provides screen dump of Perl data.
+
+=item DynaLoader
+
+Dynamically load C libraries into Perl code
+
+=item Encode
+
+Character encodings
+
+=item Encode::Alias
+
+Alias definitions to encodings
+
+=item Encode::Byte
+
+Single Byte Encodings
+
+=item Encode::CJKConstants
+
+Internally used by Encode::??::ISO_2022_*
+
+=item Encode::CN
+
+China-based Chinese Encodings
+
+=item Encode::CN::HZ
+
+Internally used by Encode::CN
+
+=item Encode::Config
+
+Internally used by Encode
+
+=item Encode::EBCDIC
+
+EBCDIC Encodings
+
+=item Encode::Encoder
+
+Object Oriented Encoder
+
+=item Encode::Encoding
+
+Encode Implementation Base Class
+
+=item Encode::GSM0338
+
+ESTI GSM 03.38 Encoding
+
+=item Encode::Guess
+
+Guesses encoding from data
+
+=item Encode::JP
+
+Japanese Encodings
+
+=item Encode::JP::H2Z
+
+Internally used by Encode::JP::2022_JP*
+
+=item Encode::JP::JIS7
+
+Internally used by Encode::JP
+
+=item Encode::KR
+
+Korean Encodings
+
+=item Encode::KR::2022_KR
+
+Internally used by Encode::KR
+
+=item Encode::MIME::Header
+
+MIME 'B' and 'Q' header encoding
+
+=item Encode::MIME::Name
+
+Internally used by Encode
+
+=item Encode::PerlIO
+
+A detailed document on Encode and PerlIO
+
+=item Encode::Supported
+
+Encodings supported by Encode
+
+=item Encode::Symbol
+
+Symbol Encodings
+
+=item Encode::TW
+
+Taiwan-based Chinese Encodings
+
+=item Encode::Unicode
+
+Various Unicode Transformation Formats
+
+=item Encode::Unicode::UTF7
+
+UTF-7 encoding
+
+=item English
+
+Use nice English (or awk) names for ugly punctuation variables
+
+=item Env
+
+Perl module that imports environment variables as scalars or arrays
+
+=item Errno
+
+System errno constants
+
+=item Exporter
+
+Implements default import method for modules
+
+=item Exporter::Heavy
+
+Exporter guts
+
+=item ExtUtils::CBuilder
+
+Compile and link C code for Perl modules
+
+=item ExtUtils::CBuilder::Platform::Windows
+
+Builder class for Windows platforms
+
+=item ExtUtils::Command
+
+Utilities to replace common UNIX commands in Makefiles etc.
+
+=item ExtUtils::Command::MM
+
+Commands for the MM's to use in Makefiles
+
+=item ExtUtils::Constant
+
+Generate XS code to import C header constants
+
+=item ExtUtils::Constant::Base
+
+Base class for ExtUtils::Constant objects
+
+=item ExtUtils::Constant::Utils
+
+Helper functions for ExtUtils::Constant
+
+=item ExtUtils::Constant::XS
+
+Generate C code for XS modules' constants.
+
+=item ExtUtils::Embed
+
+Utilities for embedding Perl in C/C++ applications
+
+=item ExtUtils::Install
+
+Install files from here to there
+
+=item ExtUtils::Installed
+
+Inventory management of installed modules
+
+=item ExtUtils::Liblist
+
+Determine libraries to use and how to use them
+
+=item ExtUtils::MM
+
+OS adjusted ExtUtils::MakeMaker subclass
+
+=item ExtUtils::MM_AIX
+
+AIX specific subclass of ExtUtils::MM_Unix
+
+=item ExtUtils::MM_Any
+
+Platform-agnostic MM methods
+
+=item ExtUtils::MM_BeOS
+
+Methods to override UN*X behaviour in ExtUtils::MakeMaker
+
+=item ExtUtils::MM_Cygwin
+
+Methods to override UN*X behaviour in ExtUtils::MakeMaker
+
+=item ExtUtils::MM_DOS
+
+DOS specific subclass of ExtUtils::MM_Unix
+
+=item ExtUtils::MM_Darwin
+
+Special behaviors for OS X
+
+=item ExtUtils::MM_MacOS
+
+Once produced Makefiles for MacOS Classic
+
+=item ExtUtils::MM_NW5
+
+Methods to override UN*X behaviour in ExtUtils::MakeMaker
+
+=item ExtUtils::MM_OS2
+
+Methods to override UN*X behaviour in ExtUtils::MakeMaker
+
+=item ExtUtils::MM_QNX
+
+QNX specific subclass of ExtUtils::MM_Unix
+
+=item ExtUtils::MM_UWIN
+
+U/WIN specific subclass of ExtUtils::MM_Unix
+
+=item ExtUtils::MM_Unix
+
+Methods used by ExtUtils::MakeMaker
+
+=item ExtUtils::MM_VMS
+
+Methods to override UN*X behaviour in ExtUtils::MakeMaker
+
+=item ExtUtils::MM_VOS
+
+VOS specific subclass of ExtUtils::MM_Unix
+
+=item ExtUtils::MM_Win32
+
+Methods to override UN*X behaviour in ExtUtils::MakeMaker
+
+=item ExtUtils::MM_Win95
+
+Method to customize MakeMaker for Win9X
+
+=item ExtUtils::MY
+
+ExtUtils::MakeMaker subclass for customization
+
+=item ExtUtils::MakeMaker
+
+Create a module Makefile
+
+=item ExtUtils::MakeMaker::Config
+
+Wrapper around Config.pm
+
+=item ExtUtils::MakeMaker::FAQ
+
+Frequently Asked Questions About MakeMaker
+
+=item ExtUtils::MakeMaker::Tutorial
+
+Writing a module with MakeMaker
+
+=item ExtUtils::Manifest
+
+Utilities to write and check a MANIFEST file
+
+=item ExtUtils::Mkbootstrap
+
+Make a bootstrap file for use by DynaLoader
+
+=item ExtUtils::Mksymlists
+
+Write linker options files for dynamic extension
+
+=item ExtUtils::Packlist
+
+Manage .packlist files
+
+=item ExtUtils::ParseXS
+
+Converts Perl XS code into C code
+
+=item ExtUtils::XSSymSet
+
+Keep sets of symbol names palatable to the VMS linker
+
+=item ExtUtils::testlib
+
+Add blib/* directories to @INC
+
+=item Fatal
+
+Replace functions with equivalents which succeed or die
+
+=item Fcntl
+
+Load the C Fcntl.h defines
+
+=item File::Basename
+
+Parse file paths into directory, filename and suffix.
+
+=item File::CheckTree
+
+Run many filetest checks on a tree
+
+=item File::Compare
+
+Compare files or filehandles
+
+=item File::Copy
+
+Copy files or filehandles
+
+=item File::DosGlob
+
+DOS like globbing and then some
+
+=item File::Fetch
+
+A generic file fetching mechanism
+
+=item File::Find
+
+Traverse a directory tree.
+
+=item File::Glob
+
+Perl extension for BSD glob routine
+
+=item File::GlobMapper
+
+Extend File Glob to Allow Input and Output Files
+
+=item File::Path
+
+Create or remove directory trees
+
+=item File::Spec
+
+Portably perform operations on file names
+
+=item File::Spec::Cygwin
+
+Methods for Cygwin file specs
+
+=item File::Spec::Epoc
+
+Methods for Epoc file specs
+
+=item File::Spec::Functions
+
+Portably perform operations on file names
+
+=item File::Spec::Mac
+
+File::Spec for Mac OS (Classic)
+
+=item File::Spec::OS2
+
+Methods for OS/2 file specs
+
+=item File::Spec::Unix
+
+File::Spec for Unix, base for other File::Spec modules
+
+=item File::Spec::VMS
+
+Methods for VMS file specs
+
+=item File::Spec::Win32
+
+Methods for Win32 file specs
+
+=item File::Temp
+
+Return name and handle of a temporary file safely
+
+=item File::stat
+
+By-name interface to Perl's built-in stat() functions
+
+=item FileCache
+
+Keep more files open than the system permits
+
+=item FileHandle
+
+Supply object methods for filehandles
+
+=item Filter::Simple
+
+Simplified source filtering
+
+=item Filter::Util::Call
+
+Perl Source Filter Utility Module
+
+=item FindBin
+
+Locate directory of original perl script
+
+=item GDBM_File
+
+Perl5 access to the gdbm library.
+
+=item Getopt::Long
+
+Extended processing of command line options
+
+=item Getopt::Std
+
+Process single-character switches with switch clustering
+
+=item Hash::Util
+
+A selection of general-utility hash subroutines
+
+=item Hash::Util::FieldHash
+
+Support for Inside-Out Classes
+
+=item I18N::Collate
+
+Compare 8-bit scalar data according to the current locale
+
+=item I18N::LangTags
+
+Functions for dealing with RFC3066-style language tags
+
+=item I18N::LangTags::Detect
+
+Detect the user's language preferences
+
+=item I18N::LangTags::List
+
+Tags and names for human languages
+
+=item I18N::Langinfo
+
+Query locale information
+
+=item IO
+
+Load various IO modules
+
+=item IO::Compress::Base
+
+Base Class for IO::Compress modules
+
+=item IO::Compress::Bzip2
+
+Write bzip2 files/buffers
+
+=item IO::Compress::Deflate
+
+Write RFC 1950 files/buffers
+
+=item IO::Compress::FAQ
+
+Frequently Asked Questions about IO::Compress
+
+=item IO::Compress::Gzip
+
+Write RFC 1952 files/buffers
+
+=item IO::Compress::RawDeflate
+
+Write RFC 1951 files/buffers
+
+=item IO::Compress::Zip
+
+Write zip files/buffers
+
+=item IO::Dir
+
+Supply object methods for directory handles
+
+=item IO::File
+
+Supply object methods for filehandles
+
+=item IO::Handle
+
+Supply object methods for I/O handles
+
+=item IO::Pipe
+
+Supply object methods for pipes
+
+=item IO::Poll
+
+Object interface to system poll call
+
+=item IO::Seekable
+
+Supply seek based methods for I/O objects
+
+=item IO::Select
+
+OO interface to the select system call
+
+=item IO::Socket
+
+Object interface to socket communications
+
+=item IO::Socket::INET
+
+Object interface for AF_INET domain sockets
+
+=item IO::Socket::UNIX
+
+Object interface for AF_UNIX domain sockets
+
+=item IO::Uncompress::AnyInflate
+
+Uncompress zlib-based (zip, gzip) file/buffer
+
+=item IO::Uncompress::AnyUncompress
+
+Uncompress gzip, zip, bzip2 or lzop file/buffer
+
+=item IO::Uncompress::Base
+
+Base Class for IO::Uncompress modules
+
+=item IO::Uncompress::Bunzip2
+
+Read bzip2 files/buffers
+
+=item IO::Uncompress::Gunzip
+
+Read RFC 1952 files/buffers
+
+=item IO::Uncompress::Inflate
+
+Read RFC 1950 files/buffers
+
+=item IO::Uncompress::RawInflate
+
+Read RFC 1951 files/buffers
+
+=item IO::Uncompress::Unzip
+
+Read zip files/buffers
+
+=item IO::Zlib
+
+IO:: style interface to L<Compress::Zlib>
+
+=item IPC::Cmd
+
+Finding and running system commands made easy
+
+=item IPC::Msg
+
+SysV Msg IPC object class
+
+=item IPC::Open2
+
+Open a process for both reading and writing
+
+=item IPC::Open3
+
+Open a process for reading, writing, and error handling
+
+=item IPC::Semaphore
+
+SysV Semaphore IPC object class
+
+=item IPC::SharedMem
+
+SysV Shared Memory IPC object class
+
+=item IPC::SysV
+
+System V IPC constants and system calls
+
+=item List::Util
+
+A selection of general-utility list subroutines
+
+=item List::Util::XS
+
+Indicate if List::Util was compiled with a C compiler
+
+=item Locale::Constants
+
+Constants for Locale codes
+
+=item Locale::Country
+
+ISO codes for country identification (ISO 3166)
+
+=item Locale::Currency
+
+ISO three letter codes for currency identification (ISO 4217)
+
+=item Locale::Language
+
+ISO two letter codes for language identification (ISO 639)
+
+=item Locale::Maketext
+
+Framework for localization
+
+=item Locale::Maketext::Simple
+
+Simple interface to Locale::Maketext::Lexicon
+
+=item Locale::Maketext::TPJ13
+
+Article about software localization
+
+=item Locale::Script
+
+ISO codes for script identification (ISO 15924)
+
+=item Log::Message
+
+A generic message storing mechanism;
+
+=item Log::Message::Config
+
+Configuration options for Log::Message
+
+=item Log::Message::Handlers
+
+Message handlers for Log::Message
+
+=item Log::Message::Item
+
+Message objects for Log::Message
+
+=item MIME::Base64
+
+Encoding and decoding of base64 strings
+
+=item MIME::QuotedPrint
+
+Encoding and decoding of quoted-printable strings
+
+=item Math::BigFloat
+
+Arbitrary size floating point math package
+
+=item Math::BigInt
+
+Arbitrary size integer/float math package
+
+=item Math::BigInt::Calc
+
+Pure Perl module to support Math::BigInt
+
+=item Math::BigInt::CalcEmu
+
+Emulate low-level math with BigInt code
+
+=item Math::BigInt::FastCalc
+
+Math::BigInt::Calc with some XS for more speed
+
+=item Math::BigRat
+
+Arbitrary big rational numbers
+
+=item Math::Complex
+
+Complex numbers and associated mathematical functions
+
+=item Math::Trig
+
+Trigonometric functions
+
+=item Memoize
+
+Make functions faster by trading space for time
+
+=item Memoize::AnyDBM_File
+
+Glue to provide EXISTS for AnyDBM_File for Storable use
+
+=item Memoize::Expire
+
+Plug-in module for automatic expiration of memoized values
+
+=item Memoize::ExpireFile
+
+Test for Memoize expiration semantics
+
+=item Memoize::ExpireTest
+
+Test for Memoize expiration semantics
+
+=item Memoize::NDBM_File
+
+Glue to provide EXISTS for NDBM_File for Storable use
+
+=item Memoize::SDBM_File
+
+Glue to provide EXISTS for SDBM_File for Storable use
+
+=item Memoize::Storable
+
+Store Memoized data in Storable database
+
+=item Module::Build
+
+Build and install Perl modules
+
+=item Module::Build::API
+
+API Reference for Module Authors
+
+=item Module::Build::Authoring
+
+Authoring Module::Build modules
+
+=item Module::Build::Base
+
+Default methods for Module::Build
+
+=item Module::Build::Compat
+
+Compatibility with ExtUtils::MakeMaker
+
+=item Module::Build::ConfigData
+
+Configuration for Module::Build
+
+=item Module::Build::Cookbook
+
+Examples of Module::Build Usage
+
+=item Module::Build::ModuleInfo
+
+Gather package and POD information from a perl module file
+
+=item Module::Build::Notes
+
+Configuration for $module_name
+
+=item Module::Build::PPMMaker
+
+Perl Package Manager file creation
+
+=item Module::Build::Platform::Amiga
+
+Builder class for Amiga platforms
+
+=item Module::Build::Platform::Default
+
+Stub class for unknown platforms
+
+=item Module::Build::Platform::EBCDIC
+
+Builder class for EBCDIC platforms
+
+=item Module::Build::Platform::MPEiX
+
+Builder class for MPEiX platforms
+
+=item Module::Build::Platform::MacOS
+
+Builder class for MacOS platforms
+
+=item Module::Build::Platform::RiscOS
+
+Builder class for RiscOS platforms
+
+=item Module::Build::Platform::Unix
+
+Builder class for Unix platforms
+
+=item Module::Build::Platform::VMS
+
+Builder class for VMS platforms
+
+=item Module::Build::Platform::VOS
+
+Builder class for VOS platforms
+
+=item Module::Build::Platform::Windows
+
+Builder class for Windows platforms
+
+=item Module::Build::Platform::aix
+
+Builder class for AIX platform
+
+=item Module::Build::Platform::cygwin
+
+Builder class for Cygwin platform
+
+=item Module::Build::Platform::darwin
+
+Builder class for Mac OS X platform
+
+=item Module::Build::Platform::os2
+
+Builder class for OS/2 platform
+
+=item Module::Build::YAML
+
+Provides just enough YAML support so that Module::Build works even if YAML.pm is not installed
+
+=item Module::CoreList
+
+What modules shipped with versions of perl
+
+=item Module::Load
+
+Runtime require of both modules and files
+
+=item Module::Load::Conditional
+
+Looking up module information / loading at runtime
+
+=item Module::Loaded
+
+Mark modules as loaded or unloaded
+
+=item Module::Pluggable
+
+Automatically give your module the ability to have plugins
+
+=item Module::Pluggable::Object
+
+Automatically give your module the ability to have plugins
+
+=item NDBM_File
+
+Tied access to ndbm files
+
+=item NEXT
+
+Provide a pseudo-class NEXT (et al) that allows method redispatch
+
+=item Net::Cmd
+
+Network Command class (as used by FTP, SMTP etc)
+
+=item Net::Config
+
+Local configuration data for libnet
+
+=item Net::Domain
+
+Attempt to evaluate the current host's internet name and domain
+
+=item Net::FTP
+
+FTP Client class
+
+=item Net::NNTP
+
+NNTP Client class
+
+=item Net::Netrc
+
+OO interface to users netrc file
+
+=item Net::POP3
+
+Post Office Protocol 3 Client class (RFC1939)
+
+=item Net::Ping
+
+Check a remote host for reachability
+
+=item Net::SMTP
+
+Simple Mail Transfer Protocol Client
+
+=item Net::Time
+
+Time and daytime network client interface
+
+=item Net::hostent
+
+By-name interface to Perl's built-in gethost*() functions
+
+=item Net::libnetFAQ
+
+Libnet Frequently Asked Questions
+
+=item Net::netent
+
+By-name interface to Perl's built-in getnet*() functions
+
+=item Net::protoent
+
+By-name interface to Perl's built-in getproto*() functions
+
+=item Net::servent
+
+By-name interface to Perl's built-in getserv*() functions
+
+=item O
+
+Generic interface to Perl Compiler backends
+
+=item ODBM_File
+
+Tied access to odbm files
+
+=item Opcode
+
+Disable named opcodes when compiling perl code
+
+=item POSIX
+
+Perl interface to IEEE Std 1003.1
+
+=item Package::Constants
+
+List all constants declared in a package
+
+=item Params::Check
+
+A generic input parsing/checking mechanism.
+
+=item Parse::CPAN::Meta
+
+Parse META.yml and other similar CPAN metadata files
+
+=item PerlIO
+
+On demand loader for PerlIO layers and root of PerlIO::* name space
+
+=item PerlIO::encoding
+
+Encoding layer
+
+=item PerlIO::scalar
+
+In-memory IO, scalar IO
+
+=item PerlIO::via
+
+Helper class for PerlIO layers implemented in perl
+
+=item PerlIO::via::QuotedPrint
+
+PerlIO layer for quoted-printable strings
+
+=item Pod::Checker
+
+Check pod documents for syntax errors
+
+=item Pod::Escapes
+
+For resolving Pod EE<lt>...E<gt> sequences
+
+=item Pod::Find
+
+Find POD documents in directory trees
+
+=item Pod::Functions
+
+Group Perl's functions a la perlfunc.pod
+
+=item Pod::Html
+
+Module to convert pod files to HTML
+
+=item Pod::InputObjects
+
+Objects representing POD input paragraphs, commands, etc.
+
+=item Pod::LaTeX
+
+Convert Pod data to formatted Latex
+
+=item Pod::Man
+
+Convert POD data to formatted *roff input
+
+=item Pod::ParseLink
+
+Parse an LE<lt>E<gt> formatting code in POD text
+
+=item Pod::ParseUtils
+
+Helpers for POD parsing and conversion
+
+=item Pod::Parser
+
+Base class for creating POD filters and translators
+
+=item Pod::Perldoc::ToChecker
+
+Let Perldoc check Pod for errors
+
+=item Pod::Perldoc::ToMan
+
+Let Perldoc render Pod as man pages
+
+=item Pod::Perldoc::ToNroff
+
+Let Perldoc convert Pod to nroff
+
+=item Pod::Perldoc::ToPod
+
+Let Perldoc render Pod as ... Pod!
+
+=item Pod::Perldoc::ToRtf
+
+Let Perldoc render Pod as RTF
+
+=item Pod::Perldoc::ToText
+
+Let Perldoc render Pod as plaintext
+
+=item Pod::Perldoc::ToTk
+
+Let Perldoc use Tk::Pod to render Pod
+
+=item Pod::Perldoc::ToXml
+
+Let Perldoc render Pod as XML
+
+=item Pod::PlainText
+
+Convert POD data to formatted ASCII text
+
+=item Pod::Plainer
+
+Perl extension for converting Pod to old style Pod.
+
+=item Pod::Select
+
+Extract selected sections of POD from input
+
+=item Pod::Simple
+
+Framework for parsing Pod
+
+=item Pod::Simple::Checker
+
+Check the Pod syntax of a document
+
+=item Pod::Simple::Debug
+
+Put Pod::Simple into trace/debug mode
+
+=item Pod::Simple::DumpAsText
+
+Dump Pod-parsing events as text
+
+=item Pod::Simple::DumpAsXML
+
+Turn Pod into XML
+
+=item Pod::Simple::HTML
+
+Convert Pod to HTML
+
+=item Pod::Simple::HTMLBatch
+
+Convert several Pod files to several HTML files
+
+=item Pod::Simple::LinkSection
+
+Represent "section" attributes of L codes
+
+=item Pod::Simple::Methody
+
+Turn Pod::Simple events into method calls
+
+=item Pod::Simple::PullParser
+
+A pull-parser interface to parsing Pod
+
+=item Pod::Simple::PullParserEndToken
+
+End-tokens from Pod::Simple::PullParser
+
+=item Pod::Simple::PullParserStartToken
+
+Start-tokens from Pod::Simple::PullParser
+
+=item Pod::Simple::PullParserTextToken
+
+Text-tokens from Pod::Simple::PullParser
+
+=item Pod::Simple::PullParserToken
+
+Tokens from Pod::Simple::PullParser
+
+=item Pod::Simple::RTF
+
+Format Pod as RTF
+
+=item Pod::Simple::Search
+
+Find POD documents in directory trees
+
+=item Pod::Simple::SimpleTree
+
+Parse Pod into a simple parse tree
+
+=item Pod::Simple::Subclassing
+
+Write a formatter as a Pod::Simple subclass
+
+=item Pod::Simple::Text
+
+Format Pod as plaintext
+
+=item Pod::Simple::TextContent
+
+Get the text content of Pod
+
+=item Pod::Simple::XHTML
+
+Format Pod as validating XHTML
+
+=item Pod::Simple::XMLOutStream
+
+Turn Pod into XML
+
+=item Pod::Text
+
+Convert POD data to formatted ASCII text
+
+=item Pod::Text::Color
+
+Convert POD data to formatted color ASCII text
+
+=item Pod::Text::Termcap
+
+Convert POD data to ASCII text with format escapes
+
+=item Pod::Usage
+
+Print a usage message from embedded pod documentation
+
+=item SDBM_File
+
+Tied access to sdbm files
+
+=item Safe
+
+Compile and execute code in restricted compartments
+
+=item Scalar::Util
+
+A selection of general-utility scalar subroutines
+
+=item Search::Dict
+
+Search for key in dictionary file
+
+=item SelectSaver
+
+Save and restore selected file handle
+
+=item SelfLoader
+
+Load functions only on demand
+
+=item Shell
+
+Run shell commands transparently within perl
+
+=item Socket
+
+Load the C socket.h defines and structure manipulators
+
+=item Storable
+
+Persistence for Perl data structures
+
+=item Switch
+
+A switch statement for Perl
+
+=item Symbol
+
+Manipulate Perl symbols and their names
+
+=item Sys::Hostname
+
+Try every conceivable way to get hostname
+
+=item Sys::Syslog
+
+Perl interface to the UNIX syslog(3) calls
+
+=item Sys::Syslog::Win32
+
+Win32 support for Sys::Syslog
+
+=item TAP::Base
+
+Base class that provides common functionality to L<TAP::Parser>
+
+=item TAP::Formatter::Color
+
+Run Perl test scripts with color
+
+=item TAP::Formatter::Console
+
+Harness output delegate for default console output
+
+=item TAP::Formatter::Console
+
+Harness output delegate for default console output
+
+=item TAP::Formatter::Console::ParallelSession
+
+Harness output delegate for parallel console output
+
+=item TAP::Formatter::Console::Session
+
+Harness output delegate for default console output
+
+=item TAP::Formatter::File
+
+Harness output delegate for file output
+
+=item TAP::Formatter::File::Session
+
+Harness output delegate for file output
+
+=item TAP::Formatter::Session
+
+Abstract base class for harness output delegate
+
+=item TAP::Harness
+
+Run test scripts with statistics
+
+=item TAP::Object
+
+Base class that provides common functionality to all C<TAP::*> modules
+
+=item TAP::Parser
+
+Parse L<TAP|Test::Harness::TAP> output
+
+=item TAP::Parser::Aggregator
+
+Aggregate TAP::Parser results
+
+=item TAP::Parser::Grammar
+
+A grammar for the Test Anything Protocol.
+
+=item TAP::Parser::Iterator
+
+Internal base class for TAP::Parser Iterators
+
+=item TAP::Parser::Iterator::Array
+
+Internal TAP::Parser array Iterator
+
+=item TAP::Parser::Iterator::Process
+
+Internal TAP::Parser Iterator
+
+=item TAP::Parser::Iterator::Stream
+
+Internal TAP::Parser Iterator
+
+=item TAP::Parser::IteratorFactory
+
+Internal TAP::Parser Iterator
+
+=item TAP::Parser::Multiplexer
+
+Multiplex multiple TAP::Parsers
+
+=item TAP::Parser::Result
+
+Base class for TAP::Parser output objects
+
+=item TAP::Parser::Result::Bailout
+
+Bailout result token.
+
+=item TAP::Parser::Result::Comment
+
+Comment result token.
+
+=item TAP::Parser::Result::Plan
+
+Plan result token.
+
+=item TAP::Parser::Result::Pragma
+
+TAP pragma token.
+
+=item TAP::Parser::Result::Test
+
+Test result token.
+
+=item TAP::Parser::Result::Unknown
+
+Unknown result token.
+
+=item TAP::Parser::Result::Version
+
+TAP syntax version token.
+
+=item TAP::Parser::Result::YAML
+
+YAML result token.
+
+=item TAP::Parser::ResultFactory
+
+Factory for creating TAP::Parser output objects
+
+=item TAP::Parser::Scheduler
+
+Schedule tests during parallel testing
+
+=item TAP::Parser::Scheduler::Job
+
+A single testing job.
+
+=item TAP::Parser::Scheduler::Spinner
+
+A no-op job.
+
+=item TAP::Parser::Source
+
+Stream output from some source
+
+=item TAP::Parser::Source::Perl
+
+Stream Perl output
+
+=item TAP::Parser::Utils
+
+Internal TAP::Parser utilities
+
+=item TAP::Parser::YAMLish::Reader
+
+Read YAMLish data from iterator
+
+=item TAP::Parser::YAMLish::Writer
+
+Write YAMLish data
+
+=item Term::ANSIColor
+
+Color screen output using ANSI escape sequences
+
+=item Term::Cap
+
+Perl termcap interface
+
+=item Term::Complete
+
+Perl word completion module
+
+=item Term::ReadLine
+
+Perl interface to various C<readline> packages.
+
+=item Term::UI
+
+Term::ReadLine UI made easy
+
+=item Test
+
+Provides a simple framework for writing test scripts
+
+=item Test::Builder
+
+Backend for building test libraries
+
+=item Test::Builder::Module
+
+Base class for test modules
+
+=item Test::Builder::Tester
+
+Test testsuites that have been built with
+
+=item Test::Builder::Tester::Color
+
+Turn on colour in Test::Builder::Tester
+
+=item Test::Harness
+
+Run Perl standard test scripts with statistics
+
+=item Test::More
+
+Yet another framework for writing test scripts
+
+=item Test::Simple
+
+Basic utilities for writing tests.
+
+=item Test::Tutorial
+
+A tutorial about writing really basic tests
+
+=item Text::Abbrev
+
+Create an abbreviation table from a list
+
+=item Text::Balanced
+
+Extract delimited text sequences from strings.
+
+=item Text::ParseWords
+
+Parse text into an array of tokens or array of arrays
+
+=item Text::Soundex
+
+Implementation of the soundex algorithm.
+
+=item Text::Tabs
+
+Expand and unexpand tabs per the unix expand(1) and unexpand(1)
+
+=item Text::Wrap
+
+Line wrapping to form simple paragraphs
+
+=item Thread
+
+Manipulate threads in Perl (for old code only)
+
+=item Thread::Queue
+
+Thread-safe queues
+
+=item Thread::Semaphore
+
+Thread-safe semaphores
+
+=item Tie::Array
+
+Base class for tied arrays
+
+=item Tie::File
+
+Access the lines of a disk file via a Perl array
+
+=item Tie::Handle
+
+Base class definitions for tied handles
+
+=item Tie::Hash
+
+Base class definitions for tied hashes
+
+=item Tie::Hash::NamedCapture
+
+Named regexp capture buffers
+
+=item Tie::Memoize
+
+Add data to hash when needed
+
+=item Tie::RefHash
+
+Use references as hash keys
+
+=item Tie::Scalar
+
+Base class definitions for tied scalars
+
+=item Tie::StdHandle
+
+Base class definitions for tied handles
+
+=item Tie::SubstrHash
+
+Fixed-table-size, fixed-key-length hashing
+
+=item Time::HiRes
+
+High resolution alarm, sleep, gettimeofday, interval timers
+
+=item Time::Local
+
+Efficiently compute time from local and GMT time
+
+=item Time::Piece
+
+Object Oriented time objects
+
+=item Time::Seconds
+
+A simple API to convert seconds to other date values
+
+=item Time::gmtime
+
+By-name interface to Perl's built-in gmtime() function
+
+=item Time::localtime
+
+By-name interface to Perl's built-in localtime() function
+
+=item Time::tm
+
+Internal object used by Time::gmtime and Time::localtime
+
+=item UNIVERSAL
+
+Base class for ALL classes (blessed references)
+
+=item Unicode::Collate
+
+Unicode Collation Algorithm
+
+=item Unicode::Normalize
+
+Unicode Normalization Forms
+
+=item Unicode::UCD
+
+Unicode character database
+
+=item User::grent
+
+By-name interface to Perl's built-in getgr*() functions
+
+=item User::pwent
+
+By-name interface to Perl's built-in getpw*() functions
+
+=item Win32
+
+Interfaces to some Win32 API Functions
+
+=item Win32API::File
+
+Low-level access to Win32 system API calls for files/dirs.
+
+=item Win32CORE
+
+Win32 CORE function stubs
+
+=item XS::APItest
+
+Test the perl C API
+
+=item XS::Typemap
+
+Module to test the XS typemaps distributed with perl
+
+=item XSLoader
+
+Dynamically load C libraries into Perl code
+
+=item version::Internal
+
+Perl extension for Version Objects
+
+=back
+
+To find out I<all> modules installed on your system, including
+those without documentation or outside the standard release,
+just use the following command (under the default win32 shell,
+double quotes should be used instead of single quotes).
+
+ % perl -MFile::Find=find -MFile::Spec::Functions -Tlwe \
+ 'find { wanted => sub { print canonpath $_ if /\.pm\z/ },
+ no_chdir => 1 }, @INC'
+
+(The -T is here to prevent '.' from being listed in @INC.)
+They should all have their own documentation installed and accessible
+via your system man(1) command. If you do not have a B<find>
+program, you can use the Perl B<find2perl> program instead, which
+generates Perl code as output you can run through perl. If you
+have a B<man> program but it doesn't find your modules, you'll have
+to fix your manpath. See L<perl> for details. If you have no
+system B<man> command, you might try the B<perldoc> program.
+
+Note also that the command C<perldoc perllocal> gives you a (possibly
+incomplete) list of the modules that have been further installed on
+your system. (The perllocal.pod file is updated by the standard MakeMaker
+install process.)
+
+=head2 Extension Modules
+
+Extension modules are written in C (or a mix of Perl and C). They
+are usually dynamically loaded into Perl if and when you need them,
+but may also be linked in statically. Supported extension modules
+include Socket, Fcntl, and POSIX.
+
+Many popular C extension modules do not come bundled (at least, not
+completely) due to their sizes, volatility, or simply lack of time
+for adequate testing and configuration across the multitude of
+platforms on which Perl was beta-tested. You are encouraged to
+look for them on CPAN (described below), or using web search engines
+like Alta Vista or Google.
+
+=head1 CPAN
+
+CPAN stands for Comprehensive Perl Archive Network; it's a globally
+replicated trove of Perl materials, including documentation, style
+guides, tricks and traps, alternate ports to non-Unix systems and
+occasional binary distributions for these. Search engines for
+CPAN can be found at http://www.cpan.org/
+
+Most importantly, CPAN includes around a thousand unbundled modules,
+some of which require a C compiler to build. Major categories of
+modules are:
+
+=over
+
+=item *
+
+Language Extensions and Documentation Tools
+
+=item *
+
+Development Support
+
+=item *
+
+Operating System Interfaces
+
+=item *
+
+Networking, Device Control (modems) and InterProcess Communication
+
+=item *
+
+Data Types and Data Type Utilities
+
+=item *
+
+Database Interfaces
+
+=item *
+
+User Interfaces
+
+=item *
+
+Interfaces to / Emulations of Other Programming Languages
+
+=item *
+
+File Names, File Systems and File Locking (see also File Handles)
+
+=item *
+
+String Processing, Language Text Processing, Parsing, and Searching
+
+=item *
+
+Option, Argument, Parameter, and Configuration File Processing
+
+=item *
+
+Internationalization and Locale
+
+=item *
+
+Authentication, Security, and Encryption
+
+=item *
+
+World Wide Web, HTML, HTTP, CGI, MIME
+
+=item *
+
+Server and Daemon Utilities
+
+=item *
+
+Archiving and Compression
+
+=item *
+
+Images, Pixmap and Bitmap Manipulation, Drawing, and Graphing
+
+=item *
+
+Mail and Usenet News
+
+=item *
+
+Control Flow Utilities (callbacks and exceptions etc)
+
+=item *
+
+File Handle and Input/Output Stream Utilities
+
+=item *
+
+Miscellaneous Modules
+
+=back
+
+The list of the registered CPAN sites as of this writing follows.
+Please note that the sorting order is alphabetical on fields:
+
+Continent
+ |
+ |-->Country
+ |
+ |-->[state/province]
+ |
+ |-->ftp
+ |
+ |-->[http]
+
+and thus the North American servers happen to be listed between the
+European and the South American sites.
+
+You should try to choose one close to you.
+
+=head2 Africa
+
+=over 4
+
+=item South Africa
+
+ http://ftp.rucus.ru.ac.za/pub/perl/CPAN/
+ ftp://ftp.rucus.ru.ac.za/pub/perl/CPAN/
+ ftp://ftp.is.co.za/programming/perl/CPAN/
+ ftp://ftp.saix.net/pub/CPAN/
+ ftp://ftp.sun.ac.za/CPAN/CPAN/
+
+=back
+
+=head2 Asia
+
+=over 4
+
+=item China
+
+ http://cpan.linuxforum.net/
+ http://cpan.shellhung.org/
+ ftp://ftp.shellhung.org/pub/CPAN
+ ftp://mirrors.hknet.com/CPAN
+
+=item Indonesia
+
+ http://mirrors.tf.itb.ac.id/cpan/
+ http://cpan.cbn.net.id/
+ ftp://ftp.cbn.net.id/mirror/CPAN
+
+=item Israel
+
+ ftp://ftp.iglu.org.il/pub/CPAN/
+ http://cpan.lerner.co.il/
+ http://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/
+ ftp://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/
+
+=item Japan
+
+ ftp://ftp.u-aizu.ac.jp/pub/CPAN
+ ftp://ftp.kddlabs.co.jp/CPAN/
+ ftp://ftp.ayamura.org/pub/CPAN/
+ ftp://ftp.jaist.ac.jp/pub/lang/perl/CPAN/
+ http://ftp.cpan.jp/
+ ftp://ftp.cpan.jp/CPAN/
+ ftp://ftp.dti.ad.jp/pub/lang/CPAN/
+ ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/
+
+=item Malaysia
+
+ http://cpan.MyBSD.org.my
+ http://mirror.leafbug.org/pub/CPAN
+ http://ossig.mncc.com.my/mirror/pub/CPAN
+
+=item Russian Federation
+
+ http://cpan.tomsk.ru
+ ftp://cpan.tomsk.ru/
+
+=item Saudi Arabia
+
+ ftp://ftp.isu.net.sa/pub/CPAN/
+
+=item Singapore
+
+ http://CPAN.en.com.sg/
+ ftp://cpan.en.com.sg/
+ http://mirror.averse.net/pub/CPAN
+ ftp://mirror.averse.net/pub/CPAN
+ http://cpan.oss.eznetsols.org
+ ftp://ftp.oss.eznetsols.org/cpan
+
+=item South Korea
+
+ http://CPAN.bora.net/
+ ftp://ftp.bora.net/pub/CPAN/
+ http://mirror.kr.FreeBSD.org/CPAN
+ ftp://ftp.kr.FreeBSD.org/pub/CPAN
+
+=item Taiwan
+
+ ftp://ftp.nctu.edu.tw/UNIX/perl/CPAN
+ http://cpan.cdpa.nsysu.edu.tw/
+ ftp://cpan.cdpa.nsysu.edu.tw/pub/CPAN
+ http://ftp.isu.edu.tw/pub/CPAN
+ ftp://ftp.isu.edu.tw/pub/CPAN
+ ftp://ftp1.sinica.edu.tw/pub1/perl/CPAN/
+ http://ftp.tku.edu.tw/pub/CPAN/
+ ftp://ftp.tku.edu.tw/pub/CPAN/
+
+=item Thailand
+
+ ftp://ftp.loxinfo.co.th/pub/cpan/
+ ftp://ftp.cs.riubon.ac.th/pub/mirrors/CPAN/
+
+=back
+
+=head2 Central America
+
+=over 4
+
+=item Costa Rica
+
+ http://ftp.ucr.ac.cr/Unix/CPAN/
+ ftp://ftp.ucr.ac.cr/pub/Unix/CPAN/
+
+=back
+
+=head2 Europe
+
+=over 4
+
+=item Austria
+
+ http://cpan.inode.at/
+ ftp://cpan.inode.at
+ ftp://ftp.tuwien.ac.at/pub/CPAN/
+
+=item Belgium
+
+ http://ftp.easynet.be/pub/CPAN/
+ ftp://ftp.easynet.be/pub/CPAN/
+ http://cpan.skynet.be
+ ftp://ftp.cpan.skynet.be/pub/CPAN
+ ftp://ftp.kulnet.kuleuven.ac.be/pub/mirror/CPAN/
+
+=item Bosnia and Herzegovina
+
+ http://cpan.blic.net/
+
+=item Bulgaria
+
+ http://cpan.online.bg
+ ftp://cpan.online.bg/cpan
+ http://cpan.zadnik.org
+ ftp://ftp.zadnik.org/mirrors/CPAN/
+ http://cpan.lirex.net/
+ ftp://ftp.lirex.net/pub/mirrors/CPAN
+
+=item Croatia
+
+ http://ftp.linux.hr/pub/CPAN/
+ ftp://ftp.linux.hr/pub/CPAN/
+
+=item Czech Republic
+
+ ftp://ftp.fi.muni.cz/pub/CPAN/
+ ftp://sunsite.mff.cuni.cz/MIRRORS/ftp.funet.fi/pub/languages/perl/CPAN/
+
+=item Denmark
+
+ http://mirrors.sunsite.dk/cpan/
+ ftp://sunsite.dk/mirrors/cpan/
+ http://cpan.cybercity.dk
+ http://www.cpan.dk/CPAN/
+ ftp://www.cpan.dk/ftp.cpan.org/CPAN/
+
+=item Estonia
+
+ ftp://ftp.ut.ee/pub/languages/perl/CPAN/
+
+=item Finland
+
+ ftp://ftp.funet.fi/pub/languages/perl/CPAN/
+ http://mirror.eunet.fi/CPAN
+
+=item France
+
+ http://www.enstimac.fr/Perl/CPAN
+ http://ftp.u-paris10.fr/perl/CPAN
+ ftp://ftp.u-paris10.fr/perl/CPAN
+ http://cpan.mirrors.easynet.fr/
+ ftp://cpan.mirrors.easynet.fr/pub/ftp.cpan.org/
+ ftp://ftp.club-internet.fr/pub/perl/CPAN/
+ http://fr.cpan.org/
+ ftp://ftp.lip6.fr/pub/perl/CPAN/
+ ftp://ftp.oleane.net/pub/mirrors/CPAN/
+ ftp://ftp.pasteur.fr/pub/computing/CPAN/
+ http://mir2.ovh.net/ftp.cpan.org
+ ftp://mir1.ovh.net/ftp.cpan.org
+ http://ftp.crihan.fr/mirrors/ftp.cpan.org/
+ ftp://ftp.crihan.fr/mirrors/ftp.cpan.org/
+ http://ftp.u-strasbg.fr/CPAN
+ ftp://ftp.u-strasbg.fr/CPAN
+ ftp://cpan.cict.fr/pub/CPAN/
+ ftp://ftp.uvsq.fr/pub/perl/CPAN/
+
+=item Germany
+
+ ftp://ftp.rub.de/pub/CPAN/
+ ftp://ftp.freenet.de/pub/ftp.cpan.org/pub/CPAN/
+ ftp://ftp.uni-erlangen.de/pub/source/CPAN/
+ ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/CPAN
+ http://pandemonium.tiscali.de/pub/CPAN/
+ ftp://pandemonium.tiscali.de/pub/CPAN/
+ http://ftp.gwdg.de/pub/languages/perl/CPAN/
+ ftp://ftp.gwdg.de/pub/languages/perl/CPAN/
+ ftp://ftp.uni-hamburg.de/pub/soft/lang/perl/CPAN/
+ ftp://ftp.leo.org/pub/CPAN/
+ http://cpan.noris.de/
+ ftp://cpan.noris.de/pub/CPAN/
+ ftp://ftp.mpi-sb.mpg.de/pub/perl/CPAN/
+ ftp://ftp.gmd.de/mirrors/CPAN/
+
+=item Greece
+
+ ftp://ftp.acn.gr/pub/lang/perl
+ ftp://ftp.forthnet.gr/pub/languages/perl/CPAN
+ ftp://ftp.ntua.gr/pub/lang/perl/
+
+=item Hungary
+
+ http://ftp.kfki.hu/packages/perl/CPAN/
+ ftp://ftp.kfki.hu/pub/packages/perl/CPAN/
+
+=item Iceland
+
+ http://ftp.rhnet.is/pub/CPAN/
+ ftp://ftp.rhnet.is/pub/CPAN/
+
+=item Ireland
+
+ http://cpan.indigo.ie/
+ ftp://cpan.indigo.ie/pub/CPAN/
+ http://ftp.heanet.ie/mirrors/ftp.perl.org/pub/CPAN
+ ftp://ftp.heanet.ie/mirrors/ftp.perl.org/pub/CPAN
+ http://sunsite.compapp.dcu.ie/pub/perl/
+ ftp://sunsite.compapp.dcu.ie/pub/perl/
+
+=item Italy
+
+ http://cpan.nettuno.it/
+ http://gusp.dyndns.org/CPAN/
+ ftp://gusp.dyndns.org/pub/CPAN
+ http://softcity.iol.it/cpan
+ ftp://softcity.iol.it/pub/cpan
+ ftp://ftp.unina.it/pub/Other/CPAN/CPAN/
+ ftp://ftp.unipi.it/pub/mirror/perl/CPAN/
+ ftp://cis.uniRoma2.it/CPAN/
+ ftp://ftp.edisontel.it/pub/CPAN_Mirror/
+ http://cpan.flashnet.it/
+ ftp://ftp.flashnet.it/pub/CPAN/
+
+=item Latvia
+
+ http://kvin.lv/pub/CPAN/
+
+=item Lithuania
+
+ ftp://ftp.unix.lt/pub/CPAN/
+
+=item Netherlands
+
+ ftp://download.xs4all.nl/pub/mirror/CPAN/
+ ftp://ftp.nl.uu.net/pub/CPAN/
+ ftp://ftp.nluug.nl/pub/languages/perl/CPAN/
+ http://cpan.cybercomm.nl/
+ ftp://mirror.cybercomm.nl/pub/CPAN
+ ftp://mirror.vuurwerk.nl/pub/CPAN/
+ ftp://ftp.cpan.nl/pub/CPAN/
+ http://ftp.easynet.nl/mirror/CPAN
+ ftp://ftp.easynet.nl/mirror/CPAN
+ http://archive.cs.uu.nl/mirror/CPAN/
+ ftp://ftp.cs.uu.nl/mirror/CPAN/
+
+=item Norway
+
+ ftp://ftp.uninett.no/pub/languages/perl/CPAN
+ ftp://ftp.uit.no/pub/languages/perl/cpan/
+
+=item Poland
+
+ ftp://ftp.mega.net.pl/CPAN
+ ftp://ftp.man.torun.pl/pub/doc/CPAN/
+ ftp://sunsite.icm.edu.pl/pub/CPAN/
+
+=item Portugal
+
+ ftp://ftp.ua.pt/pub/CPAN/
+ ftp://perl.di.uminho.pt/pub/CPAN/
+ http://cpan.dei.uc.pt/
+ ftp://ftp.dei.uc.pt/pub/CPAN
+ ftp://ftp.nfsi.pt/pub/CPAN
+ http://ftp.linux.pt/pub/mirrors/CPAN
+ ftp://ftp.linux.pt/pub/mirrors/CPAN
+ http://cpan.ip.pt/
+ ftp://cpan.ip.pt/pub/cpan/
+ http://cpan.telepac.pt/
+ ftp://ftp.telepac.pt/pub/cpan/
+
+=item Romania
+
+ ftp://ftp.bio-net.ro/pub/CPAN
+ ftp://ftp.kappa.ro/pub/mirrors/ftp.perl.org/pub/CPAN/
+ ftp://ftp.lug.ro/CPAN
+ ftp://ftp.roedu.net/pub/CPAN/
+ ftp://ftp.dntis.ro/pub/cpan/
+ ftp://ftp.iasi.roedu.net/pub/mirrors/ftp.cpan.org/
+ http://cpan.ambra.ro/
+ ftp://ftp.ambra.ro/pub/CPAN
+ ftp://ftp.dnttm.ro/pub/CPAN/
+ ftp://ftp.lasting.ro/pub/CPAN
+ ftp://ftp.timisoara.roedu.net/mirrors/CPAN/
+
+=item Russia
+
+ ftp://ftp.chg.ru/pub/lang/perl/CPAN/
+ http://cpan.rinet.ru/
+ ftp://cpan.rinet.ru/pub/mirror/CPAN/
+ ftp://ftp.aha.ru/pub/CPAN/
+ ftp://ftp.corbina.ru/pub/CPAN/
+ http://cpan.sai.msu.ru/
+ ftp://ftp.sai.msu.su/pub/lang/perl/CPAN/
+
+=item Slovakia
+
+ ftp://ftp.cvt.stuba.sk/pub/CPAN/
+
+=item Slovenia
+
+ ftp://ftp.arnes.si/software/perl/CPAN/
+
+=item Spain
+
+ http://cpan.imasd.elmundo.es/
+ ftp://ftp.rediris.es/mirror/CPAN/
+ ftp://ftp.ri.telefonica-data.net/CPAN
+ ftp://ftp.etse.urv.es/pub/perl/
+
+=item Sweden
+
+ http://ftp.du.se/CPAN/
+ ftp://ftp.du.se/pub/CPAN/
+ http://mirror.dataphone.se/CPAN
+ ftp://mirror.dataphone.se/pub/CPAN
+ ftp://ftp.sunet.se/pub/lang/perl/CPAN/
+
+=item Switzerland
+
+ http://cpan.mirror.solnet.ch/
+ ftp://ftp.solnet.ch/mirror/CPAN/
+ ftp://ftp.danyk.ch/CPAN/
+ ftp://sunsite.cnlab-switch.ch/mirror/CPAN/
+
+=item Turkey
+
+ http://ftp.ulak.net.tr/perl/CPAN/
+ ftp://ftp.ulak.net.tr/perl/CPAN
+ ftp://sunsite.bilkent.edu.tr/pub/languages/CPAN/
+
+=item Ukraine
+
+ http://cpan.org.ua/
+ ftp://cpan.org.ua/
+ ftp://ftp.perl.org.ua/pub/CPAN/
+ http://no-more.kiev.ua/CPAN/
+ ftp://no-more.kiev.ua/pub/CPAN/
+
+=item United Kingdom
+
+ http://www.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN
+ ftp://ftp.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN/
+ http://cpan.teleglobe.net/
+ ftp://cpan.teleglobe.net/pub/CPAN
+ http://cpan.mirror.anlx.net/
+ ftp://ftp.mirror.anlx.net/CPAN/
+ http://cpan.etla.org/
+ ftp://cpan.etla.org/pub/CPAN
+ ftp://ftp.demon.co.uk/pub/CPAN/
+ http://cpan.m.flirble.org/
+ ftp://ftp.flirble.org/pub/languages/perl/CPAN/
+ ftp://ftp.plig.org/pub/CPAN/
+ http://cpan.hambule.co.uk/
+ http://cpan.mirrors.clockerz.net/
+ ftp://ftp.clockerz.net/pub/CPAN/
+ ftp://usit.shef.ac.uk/pub/packages/CPAN/
+
+=back
+
+=head2 North America
+
+=over 4
+
+=item Canada
+
+=over 8
+
+=item Alberta
+
+ http://cpan.sunsite.ualberta.ca/
+ ftp://cpan.sunsite.ualberta.ca/pub/CPAN/
+
+=item Manitoba
+
+ http://theoryx5.uwinnipeg.ca/pub/CPAN/
+ ftp://theoryx5.uwinnipeg.ca/pub/CPAN/
+
+=item Nova Scotia
+
+ ftp://cpan.chebucto.ns.ca/pub/CPAN/
+
+=item Ontario
+
+ ftp://ftp.nrc.ca/pub/CPAN/
+
+=back
+
+=item Mexico
+
+ http://cpan.azc.uam.mx
+ ftp://cpan.azc.uam.mx/mirrors/CPAN
+ http://www.cpan.unam.mx/
+ ftp://ftp.unam.mx/pub/CPAN
+ http://www.msg.com.mx/CPAN/
+ ftp://ftp.msg.com.mx/pub/CPAN/
+
+=item United States
+
+=over 8
+
+=item Alabama
+
+ http://mirror.hiwaay.net/CPAN/
+ ftp://mirror.hiwaay.net/CPAN/
+
+=item California
+
+ http://cpan.develooper.com/
+ http://www.cpan.org/
+ ftp://cpan.valueclick.com/pub/CPAN/
+ http://www.mednor.net/ftp/pub/mirrors/CPAN/
+ ftp://ftp.mednor.net/pub/mirrors/CPAN/
+ http://mirrors.gossamer-threads.com/CPAN
+ ftp://cpan.nas.nasa.gov/pub/perl/CPAN/
+ http://mirrors.kernel.org/cpan/
+ ftp://mirrors.kernel.org/pub/CPAN
+ http://cpan-sj.viaverio.com/
+ ftp://cpan-sj.viaverio.com/pub/CPAN/
+ http://cpan.digisle.net/
+ ftp://cpan.digisle.net/pub/CPAN
+ http://www.perl.com/CPAN/
+ http://www.uberlan.net/CPAN
+
+=item Colorado
+
+ ftp://ftp.cs.colorado.edu/pub/perl/CPAN/
+ http://cpan.four10.com
+
+=item Delaware
+
+ http://ftp.lug.udel.edu/pub/CPAN
+ ftp://ftp.lug.udel.edu/pub/CPAN
+
+=item District of Columbia
+
+ ftp://ftp.dc.aleron.net/pub/CPAN/
+
+=item Florida
+
+ ftp://ftp.cise.ufl.edu/pub/mirrors/CPAN/
+ http://mirror.csit.fsu.edu/pub/CPAN/
+ ftp://mirror.csit.fsu.edu/pub/CPAN/
+ http://cpan.mirrors.nks.net/
+
+=item Indiana
+
+ ftp://ftp.uwsg.iu.edu/pub/perl/CPAN/
+ http://cpan.netnitco.net/
+ ftp://cpan.netnitco.net/pub/mirrors/CPAN/
+ http://archive.progeny.com/CPAN/
+ ftp://archive.progeny.com/CPAN/
+ http://fx.saintjoe.edu/pub/CPAN
+ ftp://ftp.saintjoe.edu/pub/CPAN
+ http://csociety-ftp.ecn.purdue.edu/pub/CPAN
+ ftp://csociety-ftp.ecn.purdue.edu/pub/CPAN
+
+=item Kentucky
+
+ http://cpan.uky.edu/
+ ftp://cpan.uky.edu/pub/CPAN/
+ http://slugsite.louisville.edu/cpan
+ ftp://slugsite.louisville.edu/CPAN
+
+=item Massachusetts
+
+ http://mirrors.towardex.com/CPAN
+ ftp://mirrors.towardex.com/pub/CPAN
+ ftp://ftp.ccs.neu.edu/net/mirrors/ftp.funet.fi/pub/languages/perl/CPAN/
+
+=item Michigan
+
+ ftp://cpan.cse.msu.edu/
+ http://cpan.calvin.edu/pub/CPAN
+ ftp://cpan.calvin.edu/pub/CPAN
+
+=item Nevada
+
+ http://www.oss.redundant.com/pub/CPAN
+ ftp://www.oss.redundant.com/pub/CPAN
+
+=item New Jersey
+
+ http://ftp.cpanel.net/pub/CPAN/
+ ftp://ftp.cpanel.net/pub/CPAN/
+ http://cpan.teleglobe.net/
+ ftp://cpan.teleglobe.net/pub/CPAN
+
+=item New York
+
+ http://cpan.belfry.net/
+ http://cpan.erlbaum.net/
+ ftp://cpan.erlbaum.net/
+ http://cpan.thepirtgroup.com/
+ ftp://cpan.thepirtgroup.com/
+ ftp://ftp.stealth.net/pub/CPAN/
+ http://www.rge.com/pub/languages/perl/
+ ftp://ftp.rge.com/pub/languages/perl/
+
+=item North Carolina
+
+ http://www.ibiblio.org/pub/languages/perl/CPAN
+ ftp://ftp.ibiblio.org/pub/languages/perl/CPAN
+ ftp://ftp.duke.edu/pub/perl/
+ ftp://ftp.ncsu.edu/pub/mirror/CPAN/
+
+=item Oklahoma
+
+ ftp://ftp.ou.edu/mirrors/CPAN/
+
+=item Oregon
+
+ ftp://ftp.orst.edu/pub/CPAN
+
+=item Pennsylvania
+
+ http://ftp.epix.net/CPAN/
+ ftp://ftp.epix.net/pub/languages/perl/
+ http://mirrors.phenominet.com/pub/CPAN/
+ ftp://mirrors.phenominet.com/pub/CPAN/
+ http://cpan.pair.com/
+ ftp://cpan.pair.com/pub/CPAN/
+ ftp://carroll.cac.psu.edu/pub/CPAN/
+
+=item Tennessee
+
+ ftp://ftp.sunsite.utk.edu/pub/CPAN/
+
+=item Texas
+
+ http://ftp.sedl.org/pub/mirrors/CPAN/
+ http://www.binarycode.org/cpan
+ ftp://mirror.telentente.com/pub/CPAN
+ http://mirrors.theonlinerecordstore.com/CPAN
+
+=item Utah
+
+ ftp://mirror.xmission.com/CPAN/
+
+=item Virginia
+
+ http://cpan-du.viaverio.com/
+ ftp://cpan-du.viaverio.com/pub/CPAN/
+ http://mirrors.rcn.net/pub/lang/CPAN/
+ ftp://mirrors.rcn.net/pub/lang/CPAN/
+ http://perl.secsup.org/
+ ftp://perl.secsup.org/pub/perl/
+ http://noc.cvaix.com/mirrors/CPAN/
+
+=item Washington
+
+ http://cpan.llarian.net/
+ ftp://cpan.llarian.net/pub/CPAN/
+ http://cpan.mirrorcentral.com/
+ ftp://ftp.mirrorcentral.com/pub/CPAN/
+ ftp://ftp-mirror.internap.com/pub/CPAN/
+
+=item Wisconsin
+
+ http://mirror.sit.wisc.edu/pub/CPAN/
+ ftp://mirror.sit.wisc.edu/pub/CPAN/
+ http://mirror.aphix.com/CPAN
+ ftp://mirror.aphix.com/pub/CPAN
+
+=back
+
+=back
+
+=head2 Oceania
+
+=over 4
+
+=item Australia
+
+ http://ftp.planetmirror.com/pub/CPAN/
+ ftp://ftp.planetmirror.com/pub/CPAN/
+ ftp://mirror.aarnet.edu.au/pub/perl/CPAN/
+ ftp://cpan.topend.com.au/pub/CPAN/
+ http://cpan.mirrors.ilisys.com.au
+
+=item New Zealand
+
+ ftp://ftp.auckland.ac.nz/pub/perl/CPAN/
+
+=item United States
+
+ http://aniani.ifa.hawaii.edu/CPAN/
+ ftp://aniani.ifa.hawaii.edu/CPAN/
+
+=back
+
+=head2 South America
+
+=over 4
+
+=item Argentina
+
+ ftp://mirrors.bannerlandia.com.ar/mirrors/CPAN/
+ http://www.linux.org.ar/mirrors/cpan
+ ftp://ftp.linux.org.ar/mirrors/cpan
+
+=item Brazil
+
+ ftp://cpan.pop-mg.com.br/pub/CPAN/
+ ftp://ftp.matrix.com.br/pub/perl/CPAN/
+ http://cpan.hostsul.com.br/
+ ftp://cpan.hostsul.com.br/
+
+=item Chile
+
+ http://cpan.netglobalis.net/
+ ftp://cpan.netglobalis.net/pub/CPAN/
+
+=back
+
+=head2 RSYNC Mirrors
+
+ www.linux.org.ar::cpan
+ theoryx5.uwinnipeg.ca::CPAN
+ ftp.shellhung.org::CPAN
+ rsync.nic.funet.fi::CPAN
+ ftp.u-paris10.fr::CPAN
+ mir1.ovh.net::CPAN
+ rsync://ftp.crihan.fr::CPAN
+ ftp.gwdg.de::FTP/languages/perl/CPAN/
+ ftp.leo.org::CPAN
+ ftp.cbn.net.id::CPAN
+ rsync://ftp.heanet.ie/mirrors/ftp.perl.org/pub/CPAN
+ ftp.iglu.org.il::CPAN
+ gusp.dyndns.org::cpan
+ ftp.kddlabs.co.jp::cpan
+ ftp.ayamura.org::pub/CPAN/
+ mirror.leafbug.org::CPAN
+ rsync.en.com.sg::CPAN
+ mirror.averse.net::cpan
+ rsync.oss.eznetsols.org
+ ftp.kr.FreeBSD.org::CPAN
+ ftp.solnet.ch::CPAN
+ cpan.cdpa.nsysu.edu.tw::CPAN
+ cpan.teleglobe.net::CPAN
+ rsync://rsync.mirror.anlx.net::CPAN
+ ftp.sedl.org::cpan
+ ibiblio.org::CPAN
+ cpan-du.viaverio.com::CPAN
+ aniani.ifa.hawaii.edu::CPAN
+ archive.progeny.com::CPAN
+ rsync://slugsite.louisville.edu::CPAN
+ mirror.aphix.com::CPAN
+ cpan.teleglobe.net::CPAN
+ ftp.lug.udel.edu::cpan
+ mirrors.kernel.org::mirrors/CPAN
+ mirrors.phenominet.com::CPAN
+ cpan.pair.com::CPAN
+ cpan-sj.viaverio.com::CPAN
+ mirror.csit.fsu.edu::CPAN
+ csociety-ftp.ecn.purdue.edu::CPAN
+
+For an up-to-date listing of CPAN sites,
+see http://www.cpan.org/SITES or ftp://www.cpan.org/SITES .
+
+=head1 Modules: Creation, Use, and Abuse
+
+(The following section is borrowed directly from Tim Bunce's modules
+file, available at your nearest CPAN site.)
+
+Perl implements a class using a package, but the presence of a
+package doesn't imply the presence of a class. A package is just a
+namespace. A class is a package that provides subroutines that can be
+used as methods. A method is just a subroutine that expects, as its
+first argument, either the name of a package (for "static" methods),
+or a reference to something (for "virtual" methods).
+
+A module is a file that (by convention) provides a class of the same
+name (sans the .pm), plus an import method in that class that can be
+called to fetch exported symbols. This module may implement some of
+its methods by loading dynamic C or C++ objects, but that should be
+totally transparent to the user of the module. Likewise, the module
+might set up an AUTOLOAD function to slurp in subroutine definitions on
+demand, but this is also transparent. Only the F<.pm> file is required to
+exist. See L<perlsub>, L<perltoot>, and L<AutoLoader> for details about
+the AUTOLOAD mechanism.
+
+=head2 Guidelines for Module Creation
+
+=over 4
+
+=item *
+
+Do similar modules already exist in some form?
+
+If so, please try to reuse the existing modules either in whole or
+by inheriting useful features into a new class. If this is not
+practical try to get together with the module authors to work on
+extending or enhancing the functionality of the existing modules.
+A perfect example is the plethora of packages in perl4 for dealing
+with command line options.
+
+If you are writing a module to expand an already existing set of
+modules, please coordinate with the author of the package. It
+helps if you follow the same naming scheme and module interaction
+scheme as the original author.
+
+=item *
+
+Try to design the new module to be easy to extend and reuse.
+
+Try to C<use warnings;> (or C<use warnings qw(...);>).
+Remember that you can add C<no warnings qw(...);> to individual blocks
+of code that need less warnings.
+
+Use blessed references. Use the two argument form of bless to bless
+into the class name given as the first parameter of the constructor,
+e.g.,:
+
+ sub new {
+ my $class = shift;
+ return bless {}, $class;
+ }
+
+or even this if you'd like it to be used as either a static
+or a virtual method.
+
+ sub new {
+ my $self = shift;
+ my $class = ref($self) || $self;
+ return bless {}, $class;
+ }
+
+Pass arrays as references so more parameters can be added later
+(it's also faster). Convert functions into methods where
+appropriate. Split large methods into smaller more flexible ones.
+Inherit methods from other modules if appropriate.
+
+Avoid class name tests like: C<die "Invalid" unless ref $ref eq 'FOO'>.
+Generally you can delete the C<eq 'FOO'> part with no harm at all.
+Let the objects look after themselves! Generally, avoid hard-wired
+class names as far as possible.
+
+Avoid C<< $r->Class::func() >> where using C<@ISA=qw(... Class ...)> and
+C<< $r->func() >> would work (see L<perlbot> for more details).
+
+Use autosplit so little used or newly added functions won't be a
+burden to programs that don't use them. Add test functions to
+the module after __END__ either using AutoSplit or by saying:
+
+ eval join('',<main::DATA>) || die $@ unless caller();
+
+Does your module pass the 'empty subclass' test? If you say
+C<@SUBCLASS::ISA = qw(YOURCLASS);> your applications should be able
+to use SUBCLASS in exactly the same way as YOURCLASS. For example,
+does your application still work if you change: C<< $obj = YOURCLASS->new(); >>
+into: C<< $obj = SUBCLASS->new(); >> ?
+
+Avoid keeping any state information in your packages. It makes it
+difficult for multiple other packages to use yours. Keep state
+information in objects.
+
+Always use B<-w>.
+
+Try to C<use strict;> (or C<use strict qw(...);>).
+Remember that you can add C<no strict qw(...);> to individual blocks
+of code that need less strictness.
+
+Always use B<-w>.
+
+Follow the guidelines in the perlstyle(1) manual.
+
+Always use B<-w>.
+
+=item *
+
+Some simple style guidelines
+
+The perlstyle manual supplied with Perl has many helpful points.
+
+Coding style is a matter of personal taste. Many people evolve their
+style over several years as they learn what helps them write and
+maintain good code. Here's one set of assorted suggestions that
+seem to be widely used by experienced developers:
+
+Use underscores to separate words. It is generally easier to read
+$var_names_like_this than $VarNamesLikeThis, especially for
+non-native speakers of English. It's also a simple rule that works
+consistently with VAR_NAMES_LIKE_THIS.
+
+Package/Module names are an exception to this rule. Perl informally
+reserves lowercase module names for 'pragma' modules like integer
+and strict. Other modules normally begin with a capital letter and
+use mixed case with no underscores (need to be short and portable).
+
+You may find it helpful to use letter case to indicate the scope
+or nature of a variable. For example:
+
+ $ALL_CAPS_HERE constants only (beware clashes with Perl vars)
+ $Some_Caps_Here package-wide global/static
+ $no_caps_here function scope my() or local() variables
+
+Function and method names seem to work best as all lowercase.
+e.g., C<< $obj->as_string() >>.
+
+You can use a leading underscore to indicate that a variable or
+function should not be used outside the package that defined it.
+
+=item *
+
+Select what to export.
+
+Do NOT export method names!
+
+Do NOT export anything else by default without a good reason!
+
+Exports pollute the namespace of the module user. If you must
+export try to use @EXPORT_OK in preference to @EXPORT and avoid
+short or common names to reduce the risk of name clashes.
+
+Generally anything not exported is still accessible from outside the
+module using the ModuleName::item_name (or C<< $blessed_ref->method >>)
+syntax. By convention you can use a leading underscore on names to
+indicate informally that they are 'internal' and not for public use.
+
+(It is actually possible to get private functions by saying:
+C<my $subref = sub { ... }; &$subref;>. But there's no way to call that
+directly as a method, because a method must have a name in the symbol
+table.)
+
+As a general rule, if the module is trying to be object oriented
+then export nothing. If it's just a collection of functions then
+@EXPORT_OK anything but use @EXPORT with caution.
+
+=item *
+
+Select a name for the module.
+
+This name should be as descriptive, accurate, and complete as
+possible. Avoid any risk of ambiguity. Always try to use two or
+more whole words. Generally the name should reflect what is special
+about what the module does rather than how it does it. Please use
+nested module names to group informally or categorize a module.
+There should be a very good reason for a module not to have a nested name.
+Module names should begin with a capital letter.
+
+Having 57 modules all called Sort will not make life easy for anyone
+(though having 23 called Sort::Quick is only marginally better :-).
+Imagine someone trying to install your module alongside many others.
+If in any doubt ask for suggestions in comp.lang.perl.misc.
+
+If you are developing a suite of related modules/classes it's good
+practice to use nested classes with a common prefix as this will
+avoid namespace clashes. For example: Xyz::Control, Xyz::View,
+Xyz::Model etc. Use the modules in this list as a naming guide.
+
+If adding a new module to a set, follow the original author's
+standards for naming modules and the interface to methods in
+those modules.
+
+If developing modules for private internal or project specific use,
+that will never be released to the public, then you should ensure
+that their names will not clash with any future public module. You
+can do this either by using the reserved Local::* category or by
+using a category name that includes an underscore like Foo_Corp::*.
+
+To be portable each component of a module name should be limited to
+11 characters. If it might be used on MS-DOS then try to ensure each is
+unique in the first 8 characters. Nested modules make this easier.
+
+=item *
+
+Have you got it right?
+
+How do you know that you've made the right decisions? Have you
+picked an interface design that will cause problems later? Have
+you picked the most appropriate name? Do you have any questions?
+
+The best way to know for sure, and pick up many helpful suggestions,
+is to ask someone who knows. Comp.lang.perl.misc is read by just about
+all the people who develop modules and it's the best place to ask.
+
+All you need to do is post a short summary of the module, its
+purpose and interfaces. A few lines on each of the main methods is
+probably enough. (If you post the whole module it might be ignored
+by busy people - generally the very people you want to read it!)
+
+Don't worry about posting if you can't say when the module will be
+ready - just say so in the message. It might be worth inviting
+others to help you, they may be able to complete it for you!
+
+=item *
+
+README and other Additional Files.
+
+It's well known that software developers usually fully document the
+software they write. If, however, the world is in urgent need of
+your software and there is not enough time to write the full
+documentation please at least provide a README file containing:
+
+=over 10
+
+=item *
+
+A description of the module/package/extension etc.
+
+=item *
+
+A copyright notice - see below.
+
+=item *
+
+Prerequisites - what else you may need to have.
+
+=item *
+
+How to build it - possible changes to Makefile.PL etc.
+
+=item *
+
+How to install it.
+
+=item *
+
+Recent changes in this release, especially incompatibilities
+
+=item *
+
+Changes / enhancements you plan to make in the future.
+
+=back
+
+If the README file seems to be getting too large you may wish to
+split out some of the sections into separate files: INSTALL,
+Copying, ToDo etc.
+
+=over 4
+
+=item *
+
+Adding a Copyright Notice.
+
+How you choose to license your work is a personal decision.
+The general mechanism is to assert your Copyright and then make
+a declaration of how others may copy/use/modify your work.
+
+Perl, for example, is supplied with two types of licence: The GNU GPL
+and The Artistic Licence (see the files README, Copying, and Artistic,
+or L<perlgpl> and L<perlartistic>). Larry has good reasons for NOT
+just using the GNU GPL.
+
+My personal recommendation, out of respect for Larry, Perl, and the
+Perl community at large is to state something simply like:
+
+ Copyright (c) 1995 Your Name. All rights reserved.
+ This program is free software; you can redistribute it and/or
+ modify it under the same terms as Perl itself.
+
+This statement should at least appear in the README file. You may
+also wish to include it in a Copying file and your source files.
+Remember to include the other words in addition to the Copyright.
+
+=item *
+
+Give the module a version/issue/release number.
+
+To be fully compatible with the Exporter and MakeMaker modules you
+should store your module's version number in a non-my package
+variable called $VERSION. This should be a floating point
+number with at least two digits after the decimal (i.e., hundredths,
+e.g, C<$VERSION = "0.01">). Don't use a "1.3.2" style version.
+See L<Exporter> for details.
+
+It may be handy to add a function or method to retrieve the number.
+Use the number in announcements and archive file names when
+releasing the module (ModuleName-1.02.tar.Z).
+See perldoc ExtUtils::MakeMaker.pm for details.
+
+=item *
+
+How to release and distribute a module.
+
+It's good idea to post an announcement of the availability of your
+module (or the module itself if small) to the comp.lang.perl.announce
+Usenet newsgroup. This will at least ensure very wide once-off
+distribution.
+
+If possible, register the module with CPAN. You should
+include details of its location in your announcement.
+
+Some notes about ftp archives: Please use a long descriptive file
+name that includes the version number. Most incoming directories
+will not be readable/listable, i.e., you won't be able to see your
+file after uploading it. Remember to send your email notification
+message as soon as possible after uploading else your file may get
+deleted automatically. Allow time for the file to be processed
+and/or check the file has been processed before announcing its
+location.
+
+FTP Archives for Perl Modules:
+
+Follow the instructions and links on:
+
+ http://www.cpan.org/modules/00modlist.long.html
+ http://www.cpan.org/modules/04pause.html
+
+or upload to one of these sites:
+
+ https://pause.kbx.de/pause/
+ http://pause.perl.org/pause/
+
+and notify <modules@perl.org>.
+
+By using the WWW interface you can ask the Upload Server to mirror
+your modules from your ftp or WWW site into your own directory on
+CPAN!
+
+Please remember to send me an updated entry for the Module list!
+
+=item *
+
+Take care when changing a released module.
+
+Always strive to remain compatible with previous released versions.
+Otherwise try to add a mechanism to revert to the
+old behavior if people rely on it. Document incompatible changes.
+
+=back
+
+=back
+
+=head2 Guidelines for Converting Perl 4 Library Scripts into Modules
+
+=over 4
+
+=item *
+
+There is no requirement to convert anything.
+
+If it ain't broke, don't fix it! Perl 4 library scripts should
+continue to work with no problems. You may need to make some minor
+changes (like escaping non-array @'s in double quoted strings) but
+there is no need to convert a .pl file into a Module for just that.
+
+=item *
+
+Consider the implications.
+
+All Perl applications that make use of the script will need to
+be changed (slightly) if the script is converted into a module. Is
+it worth it unless you plan to make other changes at the same time?
+
+=item *
+
+Make the most of the opportunity.
+
+If you are going to convert the script to a module you can use the
+opportunity to redesign the interface. The guidelines for module
+creation above include many of the issues you should consider.
+
+=item *
+
+The pl2pm utility will get you started.
+
+This utility will read *.pl files (given as parameters) and write
+corresponding *.pm files. The pl2pm utilities does the following:
+
+=over 10
+
+=item *
+
+Adds the standard Module prologue lines
+
+=item *
+
+Converts package specifiers from ' to ::
+
+=item *
+
+Converts die(...) to croak(...)
+
+=item *
+
+Several other minor changes
+
+=back
+
+Being a mechanical process pl2pm is not bullet proof. The converted
+code will need careful checking, especially any package statements.
+Don't delete the original .pl file till the new .pm one works!
+
+=back
+
+=head2 Guidelines for Reusing Application Code
+
+=over 4
+
+=item *
+
+Complete applications rarely belong in the Perl Module Library.
+
+=item *
+
+Many applications contain some Perl code that could be reused.
+
+Help save the world! Share your code in a form that makes it easy
+to reuse.
+
+=item *
+
+Break-out the reusable code into one or more separate module files.
+
+=item *
+
+Take the opportunity to reconsider and redesign the interfaces.
+
+=item *
+
+In some cases the 'application' can then be reduced to a small
+
+fragment of code built on top of the reusable modules. In these cases
+the application could invoked as:
+
+ % perl -e 'use Module::Name; method(@ARGV)' ...
+or
+ % perl -mModule::Name ... (in perl5.002 or higher)
+
+=back
+
+=head1 NOTE
+
+Perl does not enforce private and public parts of its modules as you may
+have been used to in other languages like C++, Ada, or Modula-17. Perl
+doesn't have an infatuation with enforced privacy. It would prefer
+that you stayed out of its living room because you weren't invited, not
+because it has a shotgun.
+
+The module and its user have a contract, part of which is common law,
+and part of which is "written". Part of the common law contract is
+that a module doesn't pollute any namespace it wasn't asked to. The
+written contract for the module (A.K.A. documentation) may make other
+provisions. But then you know when you C<use RedefineTheWorld> that
+you're redefining the world and willing to take the consequences.