Chapter 28. Special Names

Contents:

This chapter is about variables that have special meanings to
Perl. Most of the punctuational names have reasonable mnemonics, or
analogs in one of the shells (or both). But if you want to use long
variable names as synonyms, just say:

use English;

at the top of your program. This aliases all the short names to long
names in the current package. Some of these variables even have
medium names, generally borrowed from awk. Most
people eventually settle on using the short names, at least for the
more commonly used variables. Throughout this book, we consistently
refer to the short names, but also often mention the long names (in
parentheses) so that you can look them up easily in this chapter.

The semantics of these variables can be quite magical. (To create
your own magic, see Chapter 14, "Tied Variables".) A
few of these variables are read-only. If you try to assign values to
them, an exception will be raised.

In what follows, we'll first provide a concise listing of the
variables and functions for which Perl assigns a special meaning,
grouped by type, so you can look up variables that you're not
sure of the proper name. Then we'll explain all of the variables
alphabetically under their proper name (or their least improper name).

28.1. Special Names Grouped by Type

We used the word "type" loosely--the sections here actually group
variables more by their scope, that is, where they're visible from.

28.1.1. Regular Expression Special Variables

The following special variables related to pattern matching
are visible throughout the dynamic scope in which the pattern match
occurred (except for $*, which is deprecated). In other words,
they behave as though they were declared with local, so you needn't
declare them that way yourself. See Chapter 5, "Pattern Matching".

28.1.2. Per-Filehandle Variables

These special variables never need to be mentioned in a local
because they always refer to some value pertaining to the currently
selected output filehandle--each filehandle keeps its own set of
values. When you select another filehandle, the old filehandle
remembers the values it had for these variables, and the variables
now reflect the values of the new filehandle. See also the
FileHandle module in Chapter 32, "Standard Modules".

28.1.3. Per-Package Special Variables

These special variables exist separately in each package.
There should be no need to localize them, since sort automatically
does so on $a and $b, and the rest are probably best left alone
(though you will need to declare them with our if you use strict).

$a
$b
@EXPORT
@EXPORT_OK
%EXPORT_TAGS
%FIELDS
@ISA
%OVERLOAD
$VERSION

28.1.4. Program-wide Special Variables

These variables are truly global in the fullest sense--they mean the
same thing in every package, because they're all forced into package
main when unqualified (except for
@F, which is special in main, but
not forced). If you want a temporary copy of one of these, you must
localize it in the current dynamic scope.

28.1.5. Per-Package Special Filehandles

Except for DATA, which is always per-package, the following filehandles are always assumed to
be in main when not fully qualified with another package name:

_ (underline)
ARGV
ARGVOUT
DATA
STDIN
STDOUT
STDERR

28.1.6. Per-Package Special Functions

The following subroutine names have a special meaning
to Perl. They're always called implicitly because of some event,
such as accessing a tied variable or trying to call an undefined
function. We don't describe them in this chapter since they all
receive heavy-duty coverage elsewhere in the book.