home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam  


Book Home Programming PerlSearch this book

Chapter 32. Standard Modules

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

32.1.8. Networking and Interprocess Communication

These modules provide abstract interfaces around the basic interfaces we wrote about in Chapter 16, "Interprocess Communication".

Module Description
IO::Socket

Use a generic object interface to socket communications

IO::Socket::INET

Use an object interface for Internet-domain sockets

IO::Socket::UNIX

Use an object interface for Unix-domain (local) sockets

IPC::Msg

Use object methods for working with System V messages (SysV Msg IPC object class)

IPC::Open2

Open a process for simultaneous reading and writing

IPC::Open3

Open a process for reading, writing, and error handling

IPC::Semaphore

Use object methods for System V semaphores

IPC::SysV

Define constants for all System V IPC mechanisms

Net::hostent

Override built-in gethost* functions with a method interface

Net::netent

Override built-in getnet* functions with a method interface

Net::Ping

Check a remote host for reachability

Net::protoent

Override built-in getproto* functions with a method interface

Net::servent

Override built-in getserv* functions with a method interface

Socket

Load the C library socket.h definitions and structure manipulators

32.1.9. World Wide Web

These modules interface to the WWW. You may have heard of it.

Module Description
CGI

Access CGI forms and powerful automated HTML generation

CGI::Apache

Make your CGI script work under the Perl-Apache API

CGI::Carp

Write to the httpd(8) (or other) CGI error log

CGI::Cookie

Set and get HTTP cookies

CGI::Fast

Use the Fast CGI protocol

CGI::Pretty

Produce nicely formatted HTML code

CGI::Push

Do server-push CGI scripting

32.1.10. DBM Interfaces

These modules load various database management libraries.

Module Description
AnyDBM_File

Provide a framework for multiple DBM libraries

DB_File

Provide tied access to the db(3) library (version 1.x Berkeley DB)

GDBM_File

Provide tied access to the gdbm(3) library

NDBM_File

Provide tied access to the ndbm(3) library

SDBM_File

Provide tied access to SDBM (simple DBM) files

32.1.11. User Interfaces

These modules provide a decent OS CLI I/O API, ASAP.

Module Description
Term::Cap

Use the termcap(3) library

Term::Complete

Do programmable command completion on word lists

Term::ReadLine

Use any of several readline packages

32.1.12. Authentication, Security, and Encryption

These modules work with sandboxes.

Module Description
Opcode

Enable or disable named opcodes when compiling Perl code for use with the Safe module

ops

Restrict unsafe operations when compiling

Safe

Compile and execute code in restricted compartments

32.1.13. Perl Language Extensions and Internals

(Not to be confused with Intentions and Externals.)

Module Description
attributes

Get or set subroutine or variable attributes

attrs

Get or set subroutine or variable attributes (obsolete)

base

Establish inheritance of base class at compile time

Data::Dumper

Serialize Perl data structures

DB

Access the Perl debugger's experimental API

Devel::DProf

Profile a Perl program's execution

Devel::Peek

Load data debugging tools for XS programmers

diagnostics

Force verbose warnings and suppress duplicates

Dumpvalue

Provide screen dump of data

English

Use longer variable names for built-in punctuation variables

Env

Access environment variables in %ENV as regular scalars

Errno

Load the C library's errno.h definitions and tie the %! variable

Fatal

Replace built-ins with versions that raise exceptions on failure

fields

Declare compile-time verified access to a class's data attributes

less

Request less of something from Perl (unimplemented)

re

Alter default regular expression behavior

strict

Restrict sloppy constructs

subs

Predeclare the subroutine names in current the package

vars

Predeclare global variables (obsolete--see our in Chapter 29, "Functions")

32.1.14. Convenient Classes

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



Library Navigation Links

Copyright © 2002 O'Reilly & Associates. All rights reserved.