The previous edition of this book included comprehensive, definitive
coverage for all modules that were part of the standard Perl
distribution. But if we did that again now, you'd pay twice what
you're paying for this book, not to mention what you'd have to pay the
chiropractor after trying to carry the book home. Over the last few
years, more and more modules have come bundled standard; we're up to
around two hundred of them right now. Some of these, such as
CGI, have remarkably extensive documentation in
their own right. And if you're using ActiveState's distribution of
Perl, your standard library is even more luxed out.
So instead, we provide a complete listing of the standard modules,
sorted by type, along with a brief description of what each module
does. Then we cherry pick a few of our favorite modules by providing
examples of typical uses, followed by a short description of how they
work, just to give you a taste of using them. The descriptions are
suggestive rather than comprehensive, and virtually all the modules
have features beyond those shown. However, complete documentation for
all standard modules is included with every Perl distribution, so you
can just look up the details on your own system using the
perldoc program, your system's
man(1) command, or your favorite
browser. See the section "Online Documentation" in the Preface. Ask
your Local Expert if you can't find the docs, because they're almost
certainly installed somewhere on your system.
Even if they're not, you can always read the pod docs directly from
the modules themselves, because all module docs come embedded in their
corresponding module (.pm) files, and pod was
designed to be somewhat readable. (Unlike, say, HTML.)
32.1. Listings by Type
Normal module names begin with an uppercase letter. Lowercase names
indicate pragmas that you'll find documented in Chapter 31, "Pragmatic Modules", rather than in this chapter.
32.1.1. Data Types
These modules extend Perl's type system (or lack thereof) in various
ways.
Module
Description
Class::Struct
Create struct-like Perl object classes
constant
Declare constant scalars and lists
integer
Force Perl to do arithmetic with integers instead of floating point
Math::BigFloat
Calculate with arbitrary length floating-point math
Math::BigInt
Calculate with arbitrary length integer math
Math::Complex
Calculate with complex numbers and associated mathematical functions
Math::Trig
Load many trigonometric and related functions
overload
Overload Perl operators on objects
Symbol
Manipulate Perl symbol tables and generate anonymous
typeglobs
Time::Local
Efficiently compute epoch time given localtime or gmtime
32.1.2. String Processing, Language Text Processing, Parsing, and Searching
These modules do things with (or to) text.
Module
Description
Search::Dict
Use a binary search for a string in a sorted text file
Text::Abbrev
Create an abbreviation table from a list
Text::ParseWords
Parse text into a list of tokens or an array of arrays
Text::Soundex
Use Knuth's Soundex algorithm
Text::Tabs
Expand or unexpand tabs like expand
(1) and unexpand
(1)
Text::Wrap
Wrap lines to form simple paragraphs
32.1.3. Option, Argument, Parameter, and Configuration
File Processing
These modules process your command line.
Module
Description
Getopt::Long
Process extended command-line options in long form (--xxx)
Getopt::Std
Process single-character switches with switch clustering (-xyz)
32.1.4. Filenames, Filesystems, and File Locking
These modules provide cross-platform methods of file access.
Module
Description
Cwd
Get the pathname of the current working directory
File::Basename
Portably parse a pathname into directory, basename, and extension components
File::CheckTree
Run many file test checks on a set of directory trees
File::Compare
Portably compare contents of filenames or filehandles
File::Copy
Portably copy filenames or filehandles or move filenames
File::DosGlob
Do Microsoft-style fileglobbing
File::Find
Traverse a file tree like find(1)
File::Glob
Use Unix-style fileglobbing
File::Path
Portably create or remove a series of directories
File::Spec
Use portable filename operations (object-oriented interface)
File::Spec::Functions
Use portable filename operations (functional interface)
File::Spec::Mac
Use filename operations for Mac OS files
File::Spec::OS2
Use filename operations for OS/2 files
File::Spec::Unix
Use filename operations for Unix files
File::Spec::VMS
Use filename operations for VMS files
File::Spec::Win32
Use filename operations for Microsoft files
File::stat
Override built-in stat and lstat functions with a method interface
32.1.5. Filehandle, Directory Handle, and
Stream I/O Utilities
These modules provide object-oriented file, directory, and IPC access.
Module
Description
DirHandle
Use object methods for directory handles
FileCache
Keep more files concurrently open for output than your system permits
FileHandle
Use object methods for filehandles
IO
Provide a frontend to load all of IO::Dir, IO::File, IO::Handle,
IO::Pipe, IO::Seekable, and IO::Socket
IO::Dir
Use object methods for directory handles
IO::File
Use file-related object methods for filehandles
IO::Handle
Use generic object methods for filehandles
IO::Pipe
Use object methods for pipes
IO::Poll
Provide an object interface to poll(2) syscall
IO::Seekable
Use object methods for seekable I/O objects
IO::Select
Use a convenient OO interface to the select(2) syscall
SelectSaver
Save and restore selected filehandle
32.1.6. Internationalization and Locale
These modules help you perform Un-American Activities.
Module
Description
bytes
Enforce old byte-oriented semantics
charnames
Define character names used in \N{name} escapes in string literals
I18N::Collate
Compare 8-bit scalar data according to current locale
(deprecated)
locale
Use or avoid POSIX locales for built-in operations
utf8
Turn on UTF-8 and Unicode support explicitly
32.1.7. Operating System Interfaces
These modules tweak your interface to the operating system.
Module
Description
Fcntl
Load the C library's fcntl.h definitions as Perl constants
filetest
Control the file test operators (-r, -w, etc.) for
nontraditional filesystems
open
Set default disciplines for open function calls
POSIX
Use the Perl interface to POSIX 1003.1
Shell
Run shell commands transparently within Perl
sigtrap
Enable simple signal handling
Sys::Hostname
Portably try every conceivable way to determine the current hostname
Sys::Syslog
Use the C library's syslog(3) functions
Time::gmtime
Override the built-in gmtime function with a method interface
Time::localtime
Override the built-in localtime function with a method interface
Time::tm
Provide the internal object used by Time::gmtime and Time::localtime
User::grent
Override built-in getgr* functions with a method interface
User::pwent
Override built-in getpw* functions with a method interface
These modules provide base classes and other conveniences.
Module
Description
Tie::Array
Provide a base class for tied arrays
Tie::Handle
Provide base class definitions for tied handles
Tie::Hash
Provide base class definitions for tied hashes
Tie::RefHash
Provide references as hash keys
Tie::Scalar
Provide base class definitions for tied scalars
Tie::SubstrHash
Hash a fixed-size table with a fixed-length key
UNIVERSAL
Provide a base class for all classes (blessed references)
32.1.15. Warnings and Exceptions
What to do when things go rwong.
Module
Description
Carp
Provide routines that warn and die from the perspective of the caller
warnings
Control warnings within the lexical scope
32.1.16. Documentation Support
And there's an awful lot of documentation to support.
Module
Description
Pod::Checker
Check pod documents for syntax errors (used by podchecker(1))
Pod::Functions
List built-in functions by type
Pod::Html
Convert pod files to HTML (used by pod2html(1))
Pod::InputObjects
Manage documentation support
Pod::Man
Convert pod to troff(1) format for the man(1) system (used by pod2man(1))
Pod::Parser
Provide a base class for creating pod filters and translators
Pod::Select
Extract selected sections of pod from input (used by podselect(1))
Pod::Text
Convert pod data to formatted ASCII text
(used by pod2text(1))
Pod::Text::Color
Convert pod data to formatted ASCII text with ANSI color escapes
Pod::Text::Termcap
Convert pod data to ASCII text with terminal-specific escapes
Pod::Usage
Print a usage message derived from embedded pod documentation
32.1.17. Module Installation Support
These modules help other modules jump through various hoops.
Module
Description
AutoLoader
Load subroutines only on demand
AutoSplit
Split a package for autoloading
autouse
Postpone module loading until a function is used from that module
blib
Use the library from MakeMaker's uninstalled version of an extension
Config
Access Perl configuration information
CPAN
Query, download, and build Perl modules from CPAN sites
Devel::SelfStubber
Generate stubs for a module using SelfLoader
DynaLoader
Dynamically load C or C++ libraries as Perl extensions
Exporter
Implement default import method for traditional modules
ExtUtils::Command
Provide utilities to replace common external commands in Makefile
ExtUtils::Embed
Provide utilities for embedding Perl in C or C++ programs
ExtUtils::Install
Install files into the system's Perl library
ExtUtils::Installed
Manage inventory of installed modules
ExtUtils::Liblist
Determine which libraries to use and how to use them
ExtUtils::MakeMaker
Create a Makefile for a Perl extension
ExtUtils::Manifest
Load tools to write and check a MANIFEST file
ExtUtils::Miniperl
Write the C code for perlmain.c
ExtUtils::Mkbootstrap
Create a bootstrap file for use by DynaLoader
ExtUtils::Mksymlists
Write linker options files for dynamic extension
ExtUtils::MM_Cygwin
Override Unix behavior methods in ExtUtils::MakeMaker
ExtUtils::MM_OS2
Override Unix behavior methods in ExtUtils::MakeMaker
ExtUtils::MM_Unix
Provide methods used by ExtUtils::MakeMaker
ExtUtils::MM_VMS
Override Unix behavior methods in ExtUtils::MakeMaker
ExtUtils::MM_Win32
Override Unix behavior methods in ExtUtils::MakeMaker
ExtUtils::Packlist
Manage .packlist files
ExtUtils::testlib
Add blib/* directories to @INC
FindBin
Locate installation directory of the Perl program that is running
lib
Manipulate @INC at compile time
SelfLoader
Load functions only on demand
XSLoader
Dynamically load C or C++ libraries as Perl extensions
32.1.18. Development Support
These modules are for timing and testing, to see how much faster
and cleaner your code doesn't run anymore.
Module
Description
Benchmark
Compare running times of alternate code versions
Test
Use a simple framework for writing test scripts
Test::Harness
Run standard test scripts with statistics
32.1.19. Perl Compiler and Code Generator
These modules support various backend code generators for Perl.
Module
Description
B
Load Perl code generators (a.k.a. the "Perl compiler")
B::Asmdata
Provide autogenerated data about Perl ops to produce bytecode
B::Assembler
Assemble Perl bytecode
B::Bblock
Walk basic blocks in the syntax tree
B::Bytecode
Use the Perl compiler's bytecode backend
B::C
Use the Perl compiler's C translation backend
B::CC
Use the Perl compiler's optimized C translation backend
B::Debug
Walk the Perl syntax tree, printing debug info about ops
B::Deparse
Use the Perl compiler backend to reproduce Perl code
B::Disassembler
Disassemble Perl bytecode
B::Lint
Catch dubious constructs
B::Showlex
Show lexical variables used in functions or files
B::Stash
Show what stashes are loaded
B::Terse
Walk the Perl syntax tree, printing terse info about ops
B::Xref
Generate cross-reference reports for Perl programs
ByteLoader
Load byte-compiled Perl code
O
Provide a generic interface to Perl compiler backends
32.1.20. Microsoft-Related Modules
If you got the Perl distribution for Microsoft systems from
ActiveState, you already have the following Microsoft-only modules
included for you. If you just grabbed the standard source distribution
(maybe you want to build it under the Cygwin Unix-emulation environment) but you're running on Wintel, you can get all of these modules
from CPAN.
Module
Description
Win32::ChangeNotify
Monitor events related to files and directories
Win32::Console
Use Win32 console and character mode functions
Win32::Event
Use Win32 event objects from Perl
Win32::EventLog
Process Win32 event logs from Perl
Win32::File
Manage file attributes in Perl
Win32::FileSecurity
Manage FileSecurity Discretionary Access Control Lists in Perl
Win32::IPC
Load the base class for Win32 synchronization objects
Win32::Internet
Access WININET.DLL functions
Win32::Mutex
Use Win32 mutex objects from Perl
Win32::NetAdmin
Manage network groups and users in Perl
Win32::NetResource
Manage network resources in Perl
Win32::ODBC
Use ODBC Extension for Win32
Win32::OLE
Use OLE automation extensions
Win32::OLE::Const
Extract constant definitions from TypeLib
Win32::OLE::Enum
Use OLE Automation Collection Objects
Win32::OLE::NLS
Use OLE National Language Support
Win32::OLE::Variant
Create and modify OLE VARIANT variables
Win32::PerfLib
Access the Windows NT Performance Counter
Win32::Process
Create and manipulate processes
Win32::Semaphore
Use Win32 semaphore objects
Win32::Service
Manage system services
Win32::Sound
Play with Windows sounds
Win32::TieRegistry
Mung the registry
Win32API::File
Access low-level Win32 system API calls for files and directories
Win32API::Net
Manage Windows NT LanManager accounts
Win32API::Registry
Access low-level Win32 system API calls from WINREG.H