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 use
, or 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 $^H
hints variable. Others affect the current package instead, like use vars
and use subs
, which allow you to predeclare a variables or subroutines within a particular file rather than just a block. Such declarations are effective for the entire file for which they were declared. You cannot rescind them with no vars
or no subs
.
The following pragmas are defined (and have their own documentation).
attributes - Get/set subroutine or variable attributes
attrs - Set/get attributes of a subroutine (deprecated)
autouse - Postpone load of modules until a function is used
base - Establish IS-A relationship with base class at compile time
bigint - Transparent BigInteger support for Perl
bignum - Transparent BigNumber support for Perl
bigrat - Transparent BigNumber/BigRational support for Perl
blib - Use MakeMaker's uninstalled version of a package
bytes - Force byte semantics rather than character semantics
charnames - Define character names for \N{named}
string literal escapes
constant - Declare constants
diagnostics - Perl compiler pragma to force verbose warning diagnostics
encoding - Allows you to write your script in non-ascii or non-utf8
fields - Compile-time class fields
filetest - Control the filetest permission operators
if - use
a Perl module if a condition holds
integer - Use integer arithmetic instead of floating point
less - Request less of something from the compiler
lib - Manipulate @INC at compile time
locale - Use and avoid POSIX locales for built-in operations
open - Set default PerlIO layers for input and output
ops - Restrict unsafe operations when compiling
overload - Package for overloading perl operations
re - Alter regular expression behaviour
sigtrap - Enable simple signal handling
sort - Control sort() behaviour
strict - Restrict unsafe constructs
subs - Predeclare sub names
threads - Perl extension allowing use of interpreter based threads from perl
threads::shared - Perl extension for sharing data structures between threads
utf8 - Enable/disable UTF-8 (or UTF-EBCDIC) in source code
vars - Predeclare global variable names (obsolete)
vmsish - Control VMS-specific language features
warnings - Control optional warnings
warnings::register - Warnings import function
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.
AnyDBM_File - Provide framework for multiple DBMs
Attribute::Handlers - Simpler definition of attribute handlers
AutoLoader - Load subroutines only on demand
AutoSplit - Split a package for autoloading
B - The Perl Compiler
B::Asmdata - Autogenerated data about Perl ops, used to generate bytecode
B::Assembler - Assemble Perl bytecode
B::Bblock - Walk basic blocks
B::Bytecode - Perl compiler's bytecode backend
B::C - Perl compiler's C backend
B::CC - Perl compiler's optimized C translation backend
B::Concise - Walk Perl syntax tree, printing concise info about ops
B::Debug - Walk Perl syntax tree, printing debug info about ops
B::Deparse - Perl compiler backend to produce perl code
B::Disassembler - Disassemble Perl bytecode
B::Lint - Perl lint
B::Showlex - Show lexical variables used in functions or files
B::Stackobj - Helper module for CC backend
B::Stash - Show what stashes are loaded
B::Terse - Walk Perl syntax tree, printing terse info about ops
B::Xref - Generates cross reference reports for Perl programs
Benchmark - Benchmark running times of Perl code
ByteLoader - Load byte compiled perl code
CGI - Simple Common Gateway Interface Class
CGI::Apache - Backward compatibility module for CGI.pm
CGI::Carp - CGI routines for writing to the HTTPD (or other) error log
CGI::Cookie - Interface to Netscape Cookies
CGI::Fast - CGI Interface for Fast CGI
CGI::Pretty - Module to produce nicely formatted HTML code
CGI::Push - Simple Interface to Server Push
CGI::Switch - Backward compatibility module for defunct CGI::Switch
CGI::Util - Internal utilities used by CGI module
CPAN - Query, download and build perl modules from CPAN sites
CPAN::FirstTime - Utility for CPAN::Config file Initialization
CPAN::Nox - Wrapper around CPAN.pm without using any XS module
Carp - Warn of errors (from perspective of caller)
Carp::Heavy - No user serviceable parts inside
Class::ISA - Report the search path for a class's ISA tree
Class::Struct - Declare struct-like datatypes as Perl classes
Config - Access Perl configuration information
Cwd - Get pathname of current working directory
DB - Programmatic interface to the Perl debugging API (draft, subject to
DB_File - Perl5 access to Berkeley DB version 1.x
Data::Dumper - Stringified perl data structures, suitable for both printing and eval
Devel::DProf - A Perl code profiler
Devel::PPPort - Perl/Pollution/Portability
Devel::Peek - A data debugging tool for the XS programmer
Devel::SelfStubber - Generate stubs for a SelfLoading module
Digest - Modules that calculate message digests
Digest::MD5 - Perl interface to the MD5 Algorithm
DirHandle - Supply object methods for directory handles
Dumpvalue - Provides screen dump of Perl data.
DynaLoader - Dynamically load C libraries into Perl code
Encode - Character encodings
Encode::Alias - Alias definitions to encodings
Encode::Byte - Single Byte Encodings
Encode::CJKConstants - Internally used by Encode::??::ISO_2022_*
Encode::CN - China-based Chinese Encodings
Encode::CN::HZ - Internally used by Encode::CN
Encode::Config - Internally used by Encode
Encode::EBCDIC - EBCDIC Encodings
Encode::Encoder - Object Oriented Encoder
Encode::Encoding - Encode Implementation Base Class
Encode::Guess - Guesses encoding from data
Encode::JP - Japanese Encodings
Encode::JP::H2Z - Internally used by Encode::JP::2022_JP*
Encode::JP::JIS7 - Internally used by Encode::JP
Encode::KR - Korean Encodings
Encode::KR::2022_KR - Internally used by Encode::KR
Encode::MIME::Header - MIME 'B' and 'Q' header encoding
Encode::PerlIO - A detailed document on Encode and PerlIO
Encode::Supported - Encodings supported by Encode
Encode::Symbol - Symbol Encodings
Encode::TW - Taiwan-based Chinese Encodings
Encode::Unicode - Various Unicode Transformation Formats
Encode::Unicode::UTF7 - UTF-7 encoding
English - Use nice English (or awk) names for ugly punctuation variables
Env - Perl module that imports environment variables as scalars or arrays
Errno - System errno constants
Exporter - Implements default import method for modules
Exporter::Heavy - Exporter guts
ExtUtils::Command - Utilities to replace common UNIX commands in Makefiles etc.
ExtUtils::Command::MM - Commands for the MM's to use in Makefiles
ExtUtils::Constant - Generate XS code to import C header constants
ExtUtils::Embed - Utilities for embedding Perl in C/C++ applications
ExtUtils::Install - Install files from here to there
ExtUtils::Installed - Inventory management of installed modules
ExtUtils::Liblist - Determine libraries to use and how to use them
ExtUtils::MM - OS adjusted ExtUtils::MakeMaker subclass
ExtUtils::MM_Any - Platform-agnostic MM methods
ExtUtils::MM_BeOS - Methods to override UN*X behaviour in ExtUtils::MakeMaker
ExtUtils::MM_Cygwin - Methods to override UN*X behaviour in ExtUtils::MakeMaker
ExtUtils::MM_DOS - DOS specific subclass of ExtUtils::MM_Unix
ExtUtils::MM_MacOS - Methods to override UN*X behaviour in ExtUtils::MakeMaker
ExtUtils::MM_NW5 - Methods to override UN*X behaviour in ExtUtils::MakeMaker
ExtUtils::MM_OS2 - Methods to override UN*X behaviour in ExtUtils::MakeMaker
ExtUtils::MM_UWIN - U/WIN specific subclass of ExtUtils::MM_Unix
ExtUtils::MM_Unix - Methods used by ExtUtils::MakeMaker
ExtUtils::MM_VMS - Methods to override UN*X behaviour in ExtUtils::MakeMaker
ExtUtils::MM_Win32 - Methods to override UN*X behaviour in ExtUtils::MakeMaker
ExtUtils::MM_Win95 - Method to customize MakeMaker for Win9X
ExtUtils::MY - ExtUtils::MakeMaker subclass for customization
ExtUtils::MakeMaker - Create a module Makefile
ExtUtils::MakeMaker::FAQ - Frequently Asked Questions About MakeMaker
ExtUtils::MakeMaker::Tutorial - Writing a module with MakeMaker
ExtUtils::MakeMaker::bytes - Version agnostic bytes.pm
ExtUtils::MakeMaker::vmsish - Platform agnostic vmsish.pm
ExtUtils::Manifest - Utilities to write and check a MANIFEST file
ExtUtils::Mkbootstrap - Make a bootstrap file for use by DynaLoader
ExtUtils::Mksymlists - Write linker options files for dynamic extension
ExtUtils::Packlist - Manage .packlist files
ExtUtils::testlib - Add blib/* directories to @INC
Fatal - Replace functions with equivalents which succeed or die
Fcntl - Load the C Fcntl.h defines
File::Basename - Split a pathname into pieces
File::CheckTree - Run many filetest checks on a tree
File::Compare - Compare files or filehandles
File::Copy - Copy files or filehandles
File::DosGlob - DOS like globbing and then some
File::Find - Traverse a directory tree.
File::Glob - Perl extension for BSD glob routine
File::Path - Create or remove directory trees
File::Spec - Portably perform operations on file names
File::Spec::Cygwin - Methods for Cygwin file specs
File::Spec::Epoc - Methods for Epoc file specs
File::Spec::Functions - Portably perform operations on file names
File::Spec::Mac - File::Spec for Mac OS (Classic)
File::Spec::OS2 - Methods for OS/2 file specs
File::Spec::Unix - File::Spec for Unix, base for other File::Spec modules
File::Spec::VMS - Methods for VMS file specs
File::Spec::Win32 - Methods for Win32 file specs
File::Temp - Return name and handle of a temporary file safely
File::stat - By-name interface to Perl's built-in stat() functions
FileCache - Keep more files open than the system permits
FileHandle - Supply object methods for filehandles
Filter::Simple - Simplified source filtering
Filter::Util::Call - Perl Source Filter Utility Module
FindBin - Locate directory of original perl script
GDBM_File - Perl5 access to the gdbm library.
Getopt::Long - Extended processing of command line options
Getopt::Std - Process single-character switches with switch clustering
Hash::Util - A selection of general-utility hash subroutines
I18N::Collate - Compare 8-bit scalar data according to the current locale
I18N::LangTags - Functions for dealing with RFC3066-style language tags
I18N::LangTags::List - Tags and names for human languages
I18N::Langinfo - Query locale information
IO - Load various IO modules
IO::Dir - Supply object methods for directory handles
IO::File - Supply object methods for filehandles
IO::Handle - Supply object methods for I/O handles
IO::Pipe - Supply object methods for pipes
IO::Poll - Object interface to system poll call
IO::Seekable - Supply seek based methods for I/O objects
IO::Select - OO interface to the select system call
IO::Socket - Object interface to socket communications
IO::Socket::INET - Object interface for AF_INET domain sockets
IO::Socket::UNIX - Object interface for AF_UNIX domain sockets
IPC::Open2 - Open a process for both reading and writing
IPC::Open3 - Open a process for reading, writing, and error handling
IPC::SysV - SysV IPC constants
IPC::SysV::Msg - SysV Msg IPC object class
IPC::SysV::Semaphore - SysV Semaphore IPC object class
List::Util - A selection of general-utility list subroutines
Locale::Constants - Constants for Locale codes
Locale::Country - ISO codes for country identification (ISO 3166)
Locale::Currency - ISO three letter codes for currency identification (ISO 4217)
Locale::Language - ISO two letter codes for language identification (ISO 639)
Locale::Maketext - Framework for localization
Locale::Maketext::TPJ13 - Article about software localization
Locale::Script - ISO codes for script identification (ISO 15924)
MIME::Base64 - Encoding and decoding of base64 strings
MIME::Base64::QuotedPrint - Encoding and decoding of quoted-printable strings
Math::BigFloat - Arbitrary size floating point math package
Math::BigInt - Arbitrary size integer math package
Math::BigInt::Calc - Pure Perl module to support Math::BigInt
Math::BigInt::Scalar - Pure Perl module to test Math::BigInt with scalars
Math::BigRat - Arbitrarily big rationals
Math::Complex - Complex numbers and associated mathematical functions
Math::Trig - Trigonometric functions
Memoize - Make functions faster by trading space for time
Memoize::AnyDBM_File - Glue to provide EXISTS for AnyDBM_File for Storable use
Memoize::Expire - Plug-in module for automatic expiration of memoized values
Memoize::ExpireFile - Test for Memoize expiration semantics
Memoize::ExpireTest - Test for Memoize expiration semantics
Memoize::NDBM_File - Glue to provide EXISTS for NDBM_File for Storable use
Memoize::SDBM_File - Glue to provide EXISTS for SDBM_File for Storable use
Memoize::Storable - Store Memoized data in Storable database
NDBM_File - Tied access to ndbm files
NEXT - Provide a pseudo-class NEXT (et al) that allows method redispatch
Net::Cmd - Network Command class (as used by FTP, SMTP etc)
Net::Config - Local configuration data for libnet
Net::Domain - Attempt to evaluate the current host's internet name and domain
Net::FTP - FTP Client class
Net::NNTP - NNTP Client class
Net::Netrc - OO interface to users netrc file
Net::POP3 - Post Office Protocol 3 Client class (RFC1939)
Net::Ping - Check a remote host for reachability
Net::SMTP - Simple Mail Transfer Protocol Client
Net::Time - Time and daytime network client interface
Net::hostent - By-name interface to Perl's built-in gethost*() functions
Net::libnetFAQ - Libnet Frequently Asked Questions
Net::netent - By-name interface to Perl's built-in getnet*() functions
Net::protoent - By-name interface to Perl's built-in getproto*() functions
Net::servent - By-name interface to Perl's built-in getserv*() functions
O - Generic interface to Perl Compiler backends
ODBM_File - Tied access to odbm files
Opcode - Disable named opcodes when compiling perl code
POSIX - Perl interface to IEEE Std 1003.1
PerlIO - On demand loader for PerlIO layers and root of PerlIO::* name space
PerlIO::encoding - Encoding layer
PerlIO::scalar - In-memory IO, scalar IO
PerlIO::via - Helper class for PerlIO layers implemented in perl
PerlIO::via::QuotedPrint - PerlIO layer for quoted-printable strings
Pod::Checker - Check pod documents for syntax errors
Pod::Find - Find POD documents in directory trees
Pod::Functions - Group Perl's functions a la perlfunc.pod
Pod::Html - Module to convert pod files to HTML
Pod::InputObjects - Objects representing POD input paragraphs, commands, etc.
Pod::LaTeX - Convert Pod data to formatted Latex
Pod::Man - Convert POD data to formatted *roff input
Pod::ParseLink - Parse an L<> formatting code in POD text
Pod::ParseUtils - Helpers for POD parsing and conversion
Pod::Parser - Base class for creating POD filters and translators
Pod::Perldoc::ToChecker - Let Perldoc check Pod for errors
Pod::Perldoc::ToMan - Let Perldoc render Pod as man pages
Pod::Perldoc::ToNroff - Let Perldoc convert Pod to nroff
Pod::Perldoc::ToPod - Let Perldoc render Pod as ... Pod!
Pod::Perldoc::ToRtf - Let Perldoc render Pod as RTF
Pod::Perldoc::ToText - Let Perldoc render Pod as plaintext
Pod::Perldoc::ToTk - Let Perldoc use Tk::Pod to render Pod
Pod::Perldoc::ToXml - Let Perldoc render Pod as XML
Pod::PlainText - Convert POD data to formatted ASCII text
Pod::Plainer - Perl extension for converting Pod to old style Pod.
Pod::Select - Extract selected sections of POD from input
Pod::Text - Convert POD data to formatted ASCII text
Pod::Text::Color - Convert POD data to formatted color ASCII text
Pod::Text::Overstrike - Convert POD data to formatted overstrike text
Pod::Text::Termcap - Convert POD data to ASCII text with format escapes
Pod::Usage - Print a usage message from embedded pod documentation
SDBM_File - Tied access to sdbm files
Safe - Compile and execute code in restricted compartments
Scalar::Util - A selection of general-utility scalar subroutines
Search::Dict - Search for key in dictionary file
SelectSaver - Save and restore selected file handle
SelfLoader - Load functions only on demand
Shell - Run shell commands transparently within perl
Socket - Load the C socket.h defines and structure manipulators
Storable - Persistence for Perl data structures
Switch - A switch statement for Perl
Symbol - Manipulate Perl symbols and their names
Sys::Hostname - Try every conceivable way to get hostname
Sys::Syslog - Perl interface to the UNIX syslog(3) calls
Term::ANSIColor - Color screen output using ANSI escape sequences
Term::Cap - Perl termcap interface
Term::Complete - Perl word completion module
Term::ReadLine - Perl interface to various readline
packages.
Test - Provides a simple framework for writing test scripts
Test::Builder - Backend for building test libraries
Test::Harness - Run perl standard test scripts with statistics
Test::Harness::Assert - Simple assert
Test::Harness::Iterator - Internal Test::Harness Iterator
Test::Harness::Straps - Detailed analysis of test results
Test::More - Yet another framework for writing test scripts
Test::Simple - Basic utilities for writing tests.
Test::Tutorial - A tutorial about writing really basic tests
Text::Abbrev - Create an abbreviation table from a list
Text::Balanced - Extract delimited text sequences from strings.
Text::ParseWords - Parse text into an array of tokens or array of arrays
Text::Soundex - Implementation of the Soundex Algorithm as Described by Knuth
Text::Tabs - Expand and unexpand tabs per the unix expand(1) and unexpand(1)
Text::Wrap - Line wrapping to form simple paragraphs
Thread - Manipulate threads in Perl (for old code only)
Thread::Queue - Thread-safe queues
Thread::Semaphore - Thread-safe semaphores
Thread::Signal - Start a thread which runs signal handlers reliably (for old code)
Thread::Specific - Thread-specific keys
Tie::Array - Base class for tied arrays
Tie::File - Access the lines of a disk file via a Perl array
Tie::Handle - Base class definitions for tied handles
Tie::Hash - Base class definitions for tied hashes
Tie::Memoize - Add data to hash when needed
Tie::RefHash - Use references as hash keys
Tie::Scalar - Base class definitions for tied scalars
Tie::SubstrHash - Fixed-table-size, fixed-key-length hashing
Time::HiRes - High resolution alarm, sleep, gettimeofday, interval timers
Time::Local - Efficiently compute time from local and GMT time
Time::gmtime - By-name interface to Perl's built-in gmtime() function
Time::localtime - By-name interface to Perl's built-in localtime() function
Time::tm - Internal object used by Time::gmtime and Time::localtime
UNIVERSAL - Base class for ALL classes (blessed references)
Unicode::Collate - Unicode Collation Algorithm
Unicode::Normalize - Unicode Normalization Forms
Unicode::UCD - Unicode character database
User::grent - By-name interface to Perl's built-in getgr*() functions
User::pwent - By-name interface to Perl's built-in getpw*() functions
Win32 - Interfaces to some Win32 API Functions
XS::APItest - Test the perl C API
XS::Typemap - Module to test the XS typemaps distributed with perl
XSLoader - Dynamically load C libraries into Perl code