- actual arguments
The scalar values that you supply to a function or
subroutine when you call it. For instance, when you call
piglatin("bingo")
, the string "bingo"
is the actual
argument. See also argument[]
and formal arguments.
- address operator
A language construct for
manipulating the actual location of an object in your computer's memory.
Strictly speaking, there are no such operators in Perl, since it handles
all that for you automatically. You tell Perl that you want a new
thingy, and Perl worries about creating, moving, and
destroying the thingy for you. Not so strictly speaking, the backslash
operator returns a reference to a thingy, which works much like an
address. See also network address.
- alternatives
A list of possible choices from which you may select only one, as in
"Would you like door A, B, or C?" Alternatives in regular expressions
are separated with a vertical bar: |
. Alternatives in normal
Perl expressions are separated with a double vertical bar: ||
.
You might say there are two alternatives for alternatives. (Then again,
you might not. Your choice.)
- anonymous
Used to describe a thingy that is not directly accessible through a
named variable. Such a thingy must be indirectly accessible through at
least one hard reference. When the last hard reference goes away, the
anonymous thingy is destroyed without pity.
- architecture
The kind of computer you're working on, where one "kind" of computer
means all those computers that can run the same binary program. Since
Perl scripts are text files, not binaries, a Perl script is much less
sensitive to the architecture it's running on than programs in other
languages (such as C) that are compiled into machine code.
See also operating system.
- argument
A piece of data supplied as input to a program, subroutine, or
function when it is invoked to tell it what it's supposed to do.
Also called a "parameter".
- ARGV
The name of the array containing the argument "vector" from the
command
line. If you use
the empty <>
operator, ARGV is both the name of the filehandle used to
traverse the arguments, and of the scalar containing the name
of the current input file. It's also what you say to your dentist when the
Novocaine isn't working.
- arithmetic operator
A symbol such as +
or **
that tells Perl to do arithmetic.
In addition, see operator.
- array
A named list of values, each of which has a unique key to identify it.
In a normal array, the key is numeric (an integer, in fact).
In a hash (an associative array), the key is a string.
- array context
A quaint, archaic expression used by people who have read the first edition
of this book. Nowadays called list context.
- array literal
Strictly, a comma-separated, parenthesized LIST
of scalar literals.
Used loosely to refer to any parenthesized LIST
even if it contains
variables or expressions.
- array value
Another archaic phrase. See list value.
- array variable
A named list that may be processed by functions such as shift and
splice that require an array name as the first argument.
- ASCII
Used roughly to mean the American Standard Code for Information Interchange
(a 7-bit character set), and any international extensions based on it.
- assignment
An operation whose mission in life is to change the value of a variable.
- assignment operator
A compound operator composed of an ordinary assignment together with some
other operator, that changes the value of a variable in place, that is,
relative to its old value. For example, $a += 2
adds 2
to
$a
.
- associative array
See hash.
- associativity
Determines whether you do the left operator
first or the right operator
first, when you have "A operator B operator C", if the two
operators are of the same precedence. Operators like +
are left
associative, while operators like **
are right associative. See
the section "Operators" in Chapter 2, The Gory Details, for a list of associativity.
- autoincrement
To add one to something automatically.
Usually used to describe the ++
operator.
- autosplit
To split a string
automatically on whitespace, such as the -a switch does in order
to emulate awk.
- AV
Short for "array value", which refers to one of Perl's internal data
types. (Not to be confused with array value, by which people usually
mean list value.)
An AV is a kind of SV.
- awk
Descriptive editing term - short for "awkward". Also coincidentally
refers to a venerable text processing language from which Perl
derived some of its ideas.
- backtracking
The practice of saying, "If I had to do it all
over, I'd do it differently," and then actually going back and doing it
all over differently. Mathematically speaking, it's returning from an
unsuccessful recursion on a tree of possibilities. Backtracking happens
in Perl when it attempts to match patterns with a regular
expression, and its earlier guesses don't pan out.
- base class
A generic object class from
which other more specific classes are derived genetically by
inheritance. Also called a "superclass" by people who respect
their ancestors.
- BASIC/PLUS
Another ancient language, from which
Perl derived exactly one idea. OK, maybe two.[]
- big-endian
From Swift: someone who eats boiled eggs big end first. Also used of computers
that store the most significant byte of a word at a lower byte address
than the least significant byte. Often considered superior to
little-endian machines. See also little-endian.
- binary
Having to do with numbers represented in base two. That means
there are basically two numbers, zero and one. Some
people think in binary, as shown by the kinds of questions they ask:
"Should we all use Perl or Java?" Also used to describe a non-text file,
presumably because such a file makes full use of all the binary bits in
its bytes.
- bit
A very small piece of litter.
Also a number in the range zero to one, inclusive.
- bit shift
The movement of bits left or right in a computer word, which has the
effect of multiplying or dividing by a power of two.
- bless
In corporate life, to grant official approval to a thing, as in, "The VP
of Engineering has blessed our WebCruncher project." Similarly in Perl,
to grant official approval to a thingy so that it can function as a
WebCruncher object. See the bless function in Chapter 3, Functions.
- block
What a process does when it has to wait for something:
"My process blocked waiting for the disk." As an unrelated noun, it
refers to a large chunk of data, of a size that the operating
system likes to deal with (normally a power of two such as
512
or 8192
). Typically refers to a chunk of data
that's coming from or going to a disk file.
- BLOCK
A syntactic construct consisting of a sequence of Perl statements
bounded by braces. The if and while statements are
defined in terms of BLOCK
s. Sometimes we also say "block" to mean a
sequence of statements that act like a BLOCK
, such as within an
eval or a file, even though the statements aren't bounded by
braces.
- block buffering
A method of making input and output efficient by doing it a block at a
time. By default, Perl does block buffering to disk files. See
buffer and command buffering.
- Boolean context
A special kind of scalar context in which the
program is expecting to decide whether the scalar value returned by an
expression is true or false. See context.
- breakpoint
A spot in your program where you've told
the debugger to stop execution so you can poke around and see whether
anything is wrong yet.
- BSD
A psychoactive drug, popular in the 80s, probably developed at
U. C. Berkeley or thereabouts. Similar in many ways to the
prescription-only medication called "System V", but infinitely more
useful. (Or, at least, more fun.) The full chemical name is "Berkeley
Standard Distribution".
- buffer
A temporary holding location for data. Block buffering
means that the data is passed on to its destination whenever the buffer is
full. Line
buffering means that it's passed on whenever a complete
line is received. Command
buffering means that it's passed on after every
print
command. If your output is unbuffered, every byte is
transmitted separately, without passing through a holding area.
- byte
A piece of data worth eight bits in most places.
- bytecode
A pidgin-like language spoken among 'droids when they don't wish to
reveal their orientation (see endian). Named after some similar
languages spoken (for similar reasons) between compilers and interpreters
in the late twentieth century. These languages are characterized by representing
everything as a non-architecture-dependent sequence of bytes.
- C
A language beloved by many for its inside-out type definitions, inscrutable
precedence rules, and heavy overloading of the function-call mechanism.
(Well, actually, people first switched to C because they found
lower-case identifiers easier to read than upper.)
The Perl interpreter is written in C, so it's not surprising
that Perl borrowed a few ideas from it.
- C preprocessor
The typical C compiler's first pass, which processes lines beginning
with #
for conditional compilation and macro definition, and
does various manipulations of the program text based on the current
definitions. Also known as cpp(1).
- call by reference
An argument-passing mechanism in which the
formal arguments refer directly to the actual arguments, and the
subroutine can change the actual arguments by changing the formal
arguments. See also call by value.
- call by value
An argument-passing mechanism in
which the formal arguments refer to a copy of the actual
arguments, and the subroutine cannot change the actual
arguments by changing the formal arguments.
(See also call by reference).
- character
A small pattern of bits (usually seven, eight, or sixteen in number)
that is the machine's
representation of a unit of orthography.
Americans typically confuse characters with bytes.
So does Perl.
- character class
A square-bracketed list of characters used in a regular expression
to indicate that any character of the set may occur at this point.
- class
A package that either defines methods (subroutines)
that deal with objects of your class, or that derives methods from
other packages that know how to deal with objects of your class. (Or
think they know how.) See also inheritance.
- class method
A method that treats the whole class as an object.
One sort of class method is a constructor. (A class
method is also known as a "static" method in C++ terminology.)
- client
In networking, a process that initiates contact with a server
process in order to exchange data with it and perhaps receive a service.
- closure
An anonymous subroutine
that, when generated at run-time, keeps track of the identities of
externally visible lexical variables even after those lexical variables
have supposedly gone out of scope. They're called "closures" because
this sort of behavior gives mathematicians a sense of closure.
- CODE
The word "CODE" is returned by the ref function when you apply it to
a CV. See CV.
- collating sequence
The order that characters sort into. This is used by string comparison
routines to decide, for example, where in this glossary to put "collating sequence".
- command
In shell programming, the syntactic combination of a program name
with its arguments. More loosely, anything you type to a shell (a
command interpreter) that starts it doing something. In Perl
programming, a statement, which might start with a label,
and typically ends with a semicolon.
- command buffering
An option in Perl that lets you store up the output of each Perl command
and then flush it out as a single request to the operating system.
It's enabled by setting the $| variable to a non-zero value. It's
used when you don't want data sitting around not going where it's
supposed to, which may happen because the default on a file or
pipe is to use block buffering. See also buffer.
- command-line arguments
The values you supply along with a program name when you tell a
shell to execute a command. These values are passed to a Perl
script through @ARGV.
- command name
The name of the program currently executing, as typed on the command
line. In C the command name is passed to the program as the first
command-line argument. In Perl, it comes in separately as $0.
- comment
A remark that doesn't affect the meaning of the program. In Perl, a
comment is introduced by a #
character and continues to the end
of the line.
- compile-time
The time when Perl is trying to make sense of your program, as opposed
to when it thinks it knows what your program means and is merely trying
to do what it thinks your program says to do. See also run-time.
- compiler
Strictly speaking, a program that munches up another program and spits
out yet another file containing the program in a more executable form,
typically containing native machine instructions. The perl
program is not a compiler by this definition, but it does contain a compiler that takes a program and turns it into a more executable
form (syntax trees) within the perl process itself, which
the interpreter then interprets. There are, however, extension
modules to get Perl to act more like a real compiler.
- composer
A "constructor" for a thingy that isn't really an object,
like an array or a hash. For example, a pair of braces acts as a composer
for a hash, and a pair of brackets acts as a composer for an array.
See "Creating Hard References" in Chapter 4, References and Nested Data Structures.
- concatenation
The process of gluing one cat's nose to another cat's tail.
Also, a similar operation on two strings.
- conditional
Something "iffy".
- connection
In telephony, the temporary electrical circuit between the caller's
and the callee's phone. In networking, the same kind of temporary
circuit between a client and a server.
- construct
As a noun, a piece of syntax made up of smaller pieces. As a transitive
verb, to create an object using a constructor.
- constructor
A special class method that constructs an object and returns it.
Sometimes we use the term loosely to mean a composer.
- context
The surroundings, or environment.
The context given by the surrounding code determines what kind of data
a particular expression is expected to return.
The two primary contexts are list context and scalar
context. Scalar context is sometimes subdivided into Boolean
context, numeric context, and string context. There's also
a "don't care" context (which is dealt with in Chapter 2, if you care).
- continuation
The treatment of more than one physical line as a single logical
line. Makefile lines are continued by putting a backslash before the newline. Internet message
headers are continued by putting a space or tab after the
newline. Perl lines do not need any form of continuation mark,
because whitespace (including
newline) is gleefully ignored. Usually.
- core dump
The corpse of a process, in the form of a file left in the working
directory of the process, usually as a result of certain kinds of fatal
error.
- CPAN
Comprehensive Perl Archive Network. (See the Preface for more details.)
- current package
Which package the current statement is compiled in. Scan backward in
the text of your program until you find a package declaration at the same
block level, or in an enclosing block.
That's your current package name.
- current working directory
See working directory.
- currently selected output channel
The last filehandle that was designated with select(FILEHANDLE)
;
the default is STDOUT
, if no filehandle has been selected.
- CV
An internal "code value" typedef. A CV is a kind of SV.
- dangling statement
A bare, single statement, without
any braces, hanging off an if or while conditional. C
allows them. Perl doesn't.
- data flow
What your program looks like from the perspective of a particular piece
of data from the time it enters your program to the time it leaves or
is combined with some other data to make new data.
- data reduction
The process of extracting only the most interesting tidbits because
the boss can't read fast enough.
- data structure
How your various pieces of data relate to each other, and what shape
they make when you put them all together, as in a rectangular table,
or a triangular-shaped tree.
- data type
A set of possible values, together with all the
operations that know how to deal with those values. For example, a
numeric data type has a certain set of numbers that you can work with,
and it has various mathematical operations you can do on the numbers
that would make little sense on, say, a string such as
"Kilroy"
. Strings have their own operations, such as
concatenation. Compound types made of a number of smaller pieces
generally have operations to compose and decompose them, and perhaps to
rearrange them. Objects that model things in the real world often have
operations that correspond to real activities. For instance, if
you model an elevator, your elevator object might have an open_door()
method.
- DBM
Stands for "Data Base Management" routines, a set of
routines that emulate an associative array using disk files.
The routines use a dynamic hashing scheme to locate any entry with only
two disk accesses. DBM files allow a Perl script to keep a persistent
hash across multiple invocations. You can tie
your hash variables to various DBM implementations - see Chapter 5, Packages, Modules, and Object Classes.
- declaration
An assertion you make that something exists and perhaps what it's like,
without any commitment as to how or where you'll use it. A declaration
is like the part of your recipe that says, "two cups flour, one large egg, four
or five tadpoles...." See statement for its opposite. Note that
some declarations also function as statements.
- decrement
To subtract one from something.
- default
A value that is chosen for you if you don't supply a value of your own.
- defined
Having a meaning. Perl thinks that some of the things people try to do
are devoid of meaning; in particular, making use of variables that have
never been given a value, and performing certain operations on data that
isn't there. For example, if you try to read data past the end of a
file, Perl will hand you back an undefined value. See also false.
- delimiter
Some character or string that sets bounds to an
arbitrarily-sized textual object.
- dereference
A fancy computer science term meaning "to follow a reference to what it
points to". The "de" part of it refers to the fact that you're
taking away one level of indirection.
- derived class
A class that defines some of its methods in terms of a more generic
class, called a base class. Note that classes aren't classified
exclusively into base classes or derived classes: a class can function
as both a derived class and a base class simultaneously.
- destroy
To deallocate the memory of a thingy.
- destructor
A special method that is called when an object is thinking about
destroying itself.
- device
A
whiz-bang hardware gizmo (like a disk or tape drive) attached to your
computer that the operating system tries to make look like a file (or a
bunch of files). Under UNIX, these fake files
tend to live in the /dev directory.
- directory
A place where you find files, and perhaps other directories. Some
operating systems call these "folders", "drawers", or "catalogs".
- directory handle
A name that represents a particular instance of opening a directory
to read it, until you close it.
- dump
A Perl statement that is one of the many ways to get a Perl program to
produce a core dump. Most of the others are undocumented.
- dynamic scoping
Making variables visible throughout the rest of the block in which
they are first used, as well as within any subroutines that are called by the
rest of the block. Dynamically scoped variables can have their values
temporarily changed (and implicitly restored later) by a local statement.
Compare Lexical Scoping. Used more loosely to mean how a subroutine
that is in the middle of calling another subroutine "contains" that
subroutine at run-time.
- eclectic
Derived from many sources. Some would say too many.
- element
A basic building block. When you're talking about an array, it's one
of the items that make up the array.
- endian
See little-endian and big-endian.
- environment
The collective set of environment variables your process inherits
from its parent. Accessed via %ENV.
- environment variable
A mechanism by which some high-level agent such as a user can pass its
preferences down to child processes, grandchild processes,
greatgrandchild processes, and so on. Each environment variable is a
key/value pair, like one element of a hash.
- EOF
End of File. Sometimes used metaphorically as the trailing
delimiter of a here document.
- errno
The error number returned by a UNIX system call when it fails. Perl
refers to the error by the name $! (or $OS_ERROR
if you
use the English module).
- exception
A fancy term for an error. See fatal error.
- exception handling
The way a program responds to an error.
The exception handling mechanism in Perl is the eval construct.
- executable file
A file that is specially marked to tell the operating system
that it's OK to run this file as a program. Abbreviated to
"executable".
- execute
To run a program or subroutine. (Has nothing to do with the kill
command, unless you're trying to run a signal handler.)
- execute bit
The special mark that tells the operating system it can run this
program. There are actually three execute bits under UNIX, and which
bit gets used depends on whether you own the file singularly,
collectively, or not at all.
- exit status
See status.
- exponent
The part of a floating-point number that says where to put the decimal
point in the other part. See mantissa.
- export
To make symbols from your module available for
import by other modules.
- expression
Anything you can legally say in a spot where a value is required.
Typically composed of literals, variables, operators,
functions, and subroutine calls.
- false
In Perl, any value that would look like ""
or "0"
if
evaluated in a string context. Since undefined values evaluate to
""
, all undefined values are false, but not all false values
are undefined.
- fatal error
An error that causes termination of the process after printing a
nasty message on your standard error stream.
"Fatal" errors that happen inside an eval aren't fatal to
the whole program, just to that particular eval. The nasty
message then shows up in the $@ variable. You can cause a fatal
error with the die operator. This is also known as throwing or
raising an exception.
- field
A single piece of numeric or string data that is part of a longer
string, record, or line. Variable-width fields are
usually separated by delimiters (so use split to extract the
fields), while
fixed-width fields are usually at fixed positions (so use unpack).
- file
A named collection of data, usually stored on a disk in a
directory. Roughly like a document, if you're into office
metaphors. In some operating systems like UNIX, you can actually
give a file more than one name.
- file descriptor
The little number the operating system uses to keep track of which
opened file you're talking about. Perl hides the file descriptor
inside a standard I/O stream, and then attaches the stream to a
filehandle.
- file glob
A "wildcard" match on filenames.
- file test operator
A built-in Perl operator that you use to determine whether something is
true about a file, such as whether you could open it if you tried.
- filehandle
What you pick up a file with. Or, a name (not necessarily
related to the real name of
a file) that represents a particular instance of opening a file until
you close it. Thus if you're going to open and close several different
files in succession, it's possible to open each of them with the same
filehandle, so you don't have to write out separate code to process each
file. It's like the game show host calling someone "Contestant #1" so
that he doesn't have to remember too many names from day to day.
- filename
The name for a file. This name is listed in a directory, and you
can use it in
an open statement to tell the operating system exactly which file
you want to open.
- filesystem
A set of directories and files residing on a partition of
the disk. You can move a file around from directory to directory within
a filesystem without actually moving the file itself, at least under
UNIX.
- floating point
A method of storing numbers in scientific notation, such that the
precision of the number is independent of its magnitude (the decimal
point "floats"). Perl does its numeric work with floating-point
numbers, when it can't get away with using integers.
- flush
The act of emptying a buffer, often before it's full.
- fork
To create a child process identical to the parent process, at least until
it gets ideas of its own.
- formal arguments
Generic names a
subroutine knows its arguments by. In many languages,
formal arguments are always given individual names, but in Perl they are
passed via arrays. The formal arguments to a Perl program are
$ARGV[0]
, $ARGV[1]
, and so on. The formal
arguments to a Perl subroutine are $_[0]
, $_[1]
, and so
on. You may give the arguments individual names by assigning the values
to a local or my list.
- format
A specification of how many spaces and digits and things to put somewhere
so that whatever you're printing comes out nice and pretty.
- freely available
Means you don't have to pay money to get it, but the copyright on it may
still belong to someone else (like Larry).
- freely redistributable
Means you're not in trouble if you give a bootleg copy of it to your friends
(hint).
- function
Mathematically, a mapping of each of a set of input values to a particular
output value. In computers, refers to a subroutine or
operation that returns a value. It may or may not have
input values (called arguments).
- garbage collection
A misnamed feature of some programming languages - it should be called
"expecting your mother to pick up after you". Strictly speaking, Perl
doesn't do this, but relies on a reference counting mechanism to keep
things tidy. However, when your interpreter thread exits, a kind of
garbage collector runs to make sure everything is cleaned up if you've
been messy with circular references and such.
- GID
Group ID - in UNIX, the numeric group ID that the operating
system uses to identify you and members of your group.
- glob
Strictly, the shell's *
character, which will match a "glob" of
characters when you're trying to generate a list of filenames. Loosely,
the act of using globs and similar symbols to do pattern matching.
- global
Something you can see from anywhere, usually used of variables and
subroutines that are visible everywhere in your program. In Perl, only
certain special variables are truly global - most variables (and all
subroutines) are local to the current package.
- group
A set of users that you're a member of. In some operating systems (like UNIX),
you can give certain file access permissions to other members of your group.
- GV
An internal "glob value", meaning a typeglob. A GV is a kind of
SV.
- hard reference
A
scalar value containing the actual address of a thingy, such
that the thingy's reference count accounts for it. (Some hard
references are held internally, such as the implicit reference from one
of a typeglob's variable slots to its corresponding thingy.) A
hard reference is different from a symbolic reference.
- has-a
A relationship between two objects that is more tenuous than an
is-a relationship, and that can be modeled by containment of one
object in another (which in Perl means containment of a reference
to the contained object.) You generally don't want to use
inheritance to model the has-a relationship because
methods that make sense on the contained object probably don't
make sense on the object as a whole. Just because your car has-a
brake pedal doesn't mean you should stomp on your car.
- hash
A named list of key/value pairs, arranged such that you can
easily use any key to find its associated value; a binary relation, to
database users. This glossary is like a hash, where the word to be
defined is the key, and the definition is the value. A hash is also
sometimes called an "associative array". (Which is a good reason for
calling it a hash instead.)
- hash table
A method used internally by Perl for implementing associative arrays
(hashes) efficiently.
- header file
A file containing certain required definitions that you must include
"ahead" of the rest of your program to do certain obscure operations. A
C header file has a .h extension. A Perl header file has a
.ph extension. See the require operator in Chapter 3.
(Header files have been superseded by the module mechanism.)
- here document
So called because of a similar construct in shells which pretends
that the lines "right here" following the
command are a
separate file to be fed to
the command, up to some trailing delimiter
string. In Perl, however, it's just a fancy form of quoting.
- hexadecimal
A number in base sixteen, "hex" for short. The digits for ten through sixteen
are customarily represented by the letters a
through f
.
Hexadecimal constants in Perl start with 0x
.
- home directory
The directory you are placed into when you log in. On a UNIX system,
the name is often placed into $ENV{HOME}
or
$ENV{LOGDIR}
by the login program, but you can also find it
with (getpwuid($<))[7]
.
- host
The computer on which a program or other data resides.
- hubris
Excessive pride, the sort of thing Zeus zaps you for. Also the quality
that makes you write (and maintain) programs that other people won't
want to say bad things about. Hence, the third great virtue of a
programmer. See also laziness and impatience.
- HV
Short for "hash value," which refers to one of Perl's internal data
types. An HV is a kind of SV.
- identifier
A legally formed name for most anything in which a computer program
might be interested. Many languages (including Perl) allow identifiers
that start with a letter and contain letters and digits. Perl also
counts the underscore character as a valid letter.
- impatience
The anger you feel when the computer is being lazy. This makes you
write programs that don't just react to your needs, but actually
anticipate them. Or at least that pretend to. Hence, the second great
virtue of a programmer. See also laziness and hubris.
- import
Gain access to symbols that are exported from another module.
See the use operator in Chapter 3.
- increment
To add one to something.
- indexing
Formerly, the act of looking up a key in an index (like the phone book),
but now merely the act of using any kind of key or position to find the
corresponding value, even if no index is involved. Things have
degenerated to the point that Perl's index function merely locates
the position (index) of one string in another.
- indirect object
In English grammar, a short noun phrase between a verb and its direct
object indicating the beneficiary or recipient of the action. In Perl,
print STDOUT "$foo\n";
can be understood as
verb indirect-object object
where STDOUT
is the recipient of the print
action, and
"$foo"
is the object being printed. Similarly, when invoking a
class method, you might say:
% perl
sub Bob::give { shift; print
"Thanks for the @_!\n"; }
give Bob memories
^D
Thanks for the memories!
- indirection
When Randal says, "I don't know the answer... go ask Larry."
Similarly, if something in a program isn't the answer, but
indicates where the answer is, that's indirection. This can
be done with symbolic or hard references.
- inheritance
What you get from your ancestors, genetically or otherwise. If you
happen to be a class, your ancestors are called base classes
and your descendants are called derived classes. See single
inheritance and multiple inheritance.
- integer
Number with no fractional part; whole number.
- interpolation
The insertion of one piece of text somewhere in the middle of another
piece of text. The inserted piece may derive from a variable or other
indirect source.
- interpreter
Strictly speaking, a program that reads a second program and does what the
second program says
directly without turning the program into a different form first, which
is what compilers do. Perl is not an interpreter by
this definition, because it contains a kind of compiler that takes a
program and turns it into a more executable form (syntax trees) within
the Perl process itself, which the Perl run-time system then interprets.
- invocation
The act of calling up a program, subroutine, or function to do
what it's supposed to do.
- IPC
Short for Inter-Process Communication.
Sometimes a process just needs to talk to some other process.
- is-a
A relationship between two objects in which one object is
considered to be a more specific version of the other generic object: "A
camel is a mammal." Since the generic object really only exists in a
platonic sense, we usually add a little abstraction to the notion of
objects and think of the relationship as being between a generic base
class and a specific derived class. Oddly enough, platonic
classes don't always have platonic relationships - see inheritance.
- iteration
Doing something again and again and again and again and again and....
Usually this is done until you're loopy, which is why they call them
loops.[]
- iterator
A special programming gizmo that keeps track for you of where you are in
something that you're trying to iterate over. The foreach loop in
Perl contains an iterator.
- key
A special kind of data, such as your Social Security number, that can be
used to locate other data. The other data may be considered the value
associated with the key.
- keyword
See reserved word.
- label
A kind of key you can give to a statement so that you can talk about
that statement elsewhere in the program.
- laziness
The quality that makes you go to great effort to reduce overall energy
expenditure. It makes you write labor-saving programs that other people
will find useful, and document what you wrote so you don't have to
answer so many questions about it. Hence, the first great virtue of a
programmer. Also hence, this book. See also impatience and
hubris.
- left shift
A bit shift that multiplies the number by some power of two.
- lexical scoping
Looking at your Oxford English Dictionary through a microscope. (Also
known as static scoping, because dictionaries don't change very
fast.) Similarly, looking at variables that are stored in a private
dictionary for each subroutine, which are visible only from their point
of declaration down to the end of the block in which they are declared.
- Syn. static scoping. - Ant. dynamic
scoping. [< Gk]
- library
A collection of procedures. In ancient days, referred to a collection of
subroutines in a .pl file. In modern times, refers often
to the entire collection of Perl modules on your system.
- line
In UNIX, a sequence of zero or more non-newline characters terminated
with a newline character. On non-UNIX machines, this is emulated
even if the underlying operating system has different ideas.
- line buffering
Used by a standard I/O output stream that flushes its buffer
after every newline. Many standard I/O libraries automatically
set this up on output that is going to the terminal.
- line number
The number of lines read prior to this one, plus 1
. Perl keeps
a separate line number for each script or input file it opens. The
current script line number is represented by __LINE__
. The
current input line number (for the file that was most recently read from
via <>
) is represented by the $. variable. Many error
messages report both values, if available.
- link
In UNIX, a name in a directory, representing a file. A given file can
have multiple links to it. It's like having the same phone number
listed in the phone directory under different names.
- list
An ordered set of values.
- LIST
A syntactic construct representing a comma-separated list of
expressions, evaluated to produce a list value. Each expression
in a LIST
is evaluated in a list context.
- list context
The situation in which an expression
is expected by its surroundings (the code
calling it) to return a list of values rather than a single value.
Functions that want a LIST
of arguments tell those arguments that
they should produce a list value.
See also context.
- list operator
Generally, an operator that does
something with a list of values. Specifically, those operators (such as
print, unlink, and system) that do not require parentheses around
their argument list.
- list value
An unnamed list of scalar values that may be passed around within a program
and passed to any function that provides a list context.
- literal
Often means "figurative", as in "I'm literally scared to death." More
literally, a symbol in a programming language like a number or string
that gives you an actual value instead of merely representing possible
values like a variable.
- little-endian
From Swift: someone who eats boiled eggs little end first.
Also used of computers that store the least significant byte of a word at
a lower byte address than the most significant byte.
Often considered superior to big-endian machines.
See also
big-endian.
- local
Not meaning the same thing everywhere. A variable in
Perl can be localized inside a block or a package.
See scope.
- logical operator
Symbols representing the concepts "and", "or", and "not".
- loop
A construct that performs something repeatedly, like a roller coaster.
(Go to the next entry if you're tired of riding this one.) See loop.
- loop control statement
Any statement within the body of a loop that can make a loop stop
looping or skip an iteration. See the middle sentence of the previous
entry. Generally you shouldn't try this on roller coasters without a
parachute.
- loop label
A kind of key or name attached to a loop so that loop control statements
can talk about which loop they want to control.
- lvalue
Term used by language-lawyers for a location you can assign a new
value to, such as a variable or an element of an
array. The "l" is short for "left", as in the left side of an
assignment, a typical place for lvalues.
- magical increment
An increment operator that knows how to add 1
to alphanumeric
strings as well as to numbers.
- magical variables
Special variables that have side effects when you access them or assign
to them. For example, in Perl, changing elements of the %ENV
array also changes the corresponding environment variables that
subprocesses will use. Reading the $! variable gives you the
current UNIX error number or message.
- manpage
A "page" from the UNIX manuals, typically accessed online via the
man(1) command. A manpage contains a synopsis, a description, a
list of bugs, and so on, and is typically longer than a page. There are
manpages documenting commands, system calls, library
functions, devices, protocols, files, and such.
- mantissa
The part of a floating-point number that gives the digits of the
number without saying where the decimal point really belongs. See
exponent.
- matching
See pattern matching.
- metacharacter
A character that is not supposed to be treated normally. Which
characters are to be treated specially as metacharacters
varies greatly from context to
context. Your shell will have certain metacharacters, double-quoted Perl
strings have other metacharacters, and patterns have all the
double-quote metacharacters plus some extra ones. In addition, people
sometimes use this term to describe characters that have the eighth bit
set.
- method
A kind of action that an object can take if
you direct it to.
- minimalism
The belief that "small is beautiful." Paradoxically, if you say
something in a small language, it turns out big, and if you say it in a
big language, it turns out small. Go figure.
- mode
In the context of the stat(2) system call, refers to the word holding
the permissions and the type of the file.
- modifier
A conditional or loop that you put
after the statement instead of before, if you know what I mean.
- module
A file that defines a package of (almost) the same name,
which can either export symbols or function as an object
class. The unit of reusability in Perl. See the use
operator.
- modulus
A divisor, when you're interested in the remainder instead of the quotient.
- multi-dimensional array
An array with multiple subscripts for finding a single element.
Perl does them with references - see Chapter 4.
- multiple inheritance
The features you got from your mother and father, mixed together
unpredictably. (See also inheritance, and single
inheritance.) In computer languages (including Perl), the notion
that a given class may have multiple direct ancestors or base classes.
- namespace
A domain of names. You needn't worry whether the names in one such domain
have been used in another. See package.
- network address
The most important attribute of a socket, like your telephone's
telephone number.
- newline
A single character that represents the end of a line, with the ASCII
value of 012 octal under UNIX (but 015 on a Mac), and represented by
\n
in Perl strings. For certain physical devices like
terminals, this gets translated to a line feed and a carriage return.
- null character
A character with the ASCII value of zero. It's used by C and some UNIX
system calls to terminate strings, but Perl allows strings to contain a
null.
- null list
A list value with zero elements, represented in Perl by ()
.
- null string
A string not containing any characters, not to be confused with
a string containing a null character, which has a positive length.
- numeric context
The situation in which an expression is expected by its surroundings
(the code calling it) to return a number. See also context and
string context.
- nybble
Half a byte, equivalent to one hexadecimal digit.
- object
Something that "knows" what kind of thing it is, and what it can do
because of what kind of thing it is. Your program can request an object
to do things, but the object gets to decide whether it wants to do it or
not.
- octal
A number in base eight. Only the digits zero through seven
are allowed. Octal constants in Perl start with zero, as in 013.
- offset
How many things you have to skip over when moving from the beginning of a
string or array to a specific position within it. Thus, the
minimum offset is zero, not one, because you don't skip
anything to get to the first item.
- operand
You, after you dial the operator on your phone. Or, an expression that
gives a value that an operator operates on. See also precedence.
- operating system
A special program that runs on the bare machine
and hides the gory details of managing processes and
devices. It is usually used in a looser sense to indicate a
particular culture of programming. The loose sense can be used at
varying levels of specificity. At one extreme, you might say that all
versions of UNIX and UNIX-lookalikes are the same operating system
(upsetting many people, especially some lawyers). At the other extreme,
this particular version of this particular vendor's operating system is
different than any other version of this or any other vendor's operating
system. Perl is much more portable across operating systems than many
other languages. See also architecture.
- operator
A function, generally one that is built into a language, often
with a special syntax or symbol. A given operator may have specific
expectations about what types of data you give as its arguments
(operands) and what type of data you want back from it.
- operator overloading
A kind of overloading that you can do on the built-in
operators to make them work (syntactically) on objects as if
they were ordinary scalar values, but with the actual semantics supplied
by the object class. This is set up with the overload pragma - see
Chapter 7, The Standard Perl Library.
- options
See switches.
- overloading
Giving additional meanings to a symbol or construct. Actually, all
languages do overloading to one extent or another, since people are good
at figuring out things from context. If you look in your dictionary,
you will find that the meaning of the word "single" is not single.
- overriding
Hiding or invalidating some other definition of the same name. (Not to
be confused with overloading, which only adds definitions.) To
confuse the issue further, we use the word with two overloaded
definitions: to describe how you can define your own subroutine
that hides a built-in function of the same name, and also to
describe how you can define a replacement method in a derived
class that hides a base class's method of the same name.
You'll find both of these usages in Chapter 5.
- owner
The one user (apart from the superuser) who has absolute control over a
file. A file may also have a group of users that may exercise
joint ownership if the real owner permits them. See permission
flags.
- package
A quantity of code that values its privacy, and tries to keep other code
from trespassing upon its namespace
by fencing all of its private belongings (variables
and subroutines) into its own area. A variable or subroutine mentioned
in the package belongs only to that package, even if there's another
variable or subroutine with an identical name in some other package.
- package local
A variable or subroutine belonging to a package and not
visible to anyone else. At least, not without peeking. See
namespace.
- parameter
See argument.
- parsing
The subtle but sometimes brutal art of attempting to turn your possibly
malformed program into a valid syntax tree.
- PATH
The list of directories the system looks in to find a program
you want to execute. The list is stored as one of your environment
variables, accessible in Perl as $ENV{PATH}
.
- pathname
A fully qualified filename such as /usr/bin/perl or
C:\my_apps\perl.exe. Sometimes confused with PATH
.
- pattern matching
Taking a pattern, expressed as a regular expression, and trying the
pattern various ways on a string to see if there's any way to
make it fit. Often used to pick interesting tidbits out of a file.
- permission flags
Bits that the owner of a file sets or unsets in order to allow or
disallow access to other people. These flags are part of the mode
word returned by the stat operator when you ask about a file.
On UNIX systems you can check the ls(1) manpage for more
information about the permission flags.
- Pern
What you get when you do Perl++
twice. Increment it only
once, and your hair curls. Increment it three times, and you get a
tasty beverage that isn't Java. See also slice.
- pipe
A direct connection that carries the output of one process to the input
of another without the necessity of an intermediate temporary file.
Once the pipe is set up, the two processes in question can mostly read
and write as if they were talking to a normal file.
- pipeline
A series of processes all in a row, linked by pipes,
where each passes
its output to the next.
- pointer
A variable in a language like C that contains the exact memory
location of some other item. Perl handles pointers internally so you
don't have to worry about them. Instead, you just use symbolic pointers
in the form of keys and variable names, or hard
references, which aren't pointers (but act like pointers, and do in
fact contain pointers).
- port
The part of the address
of a TCP or UDP socket that directs packets to the correct process after
finding the right machine, something like the phone extension number you
give when you reach the company operator.
- pragma
A library module whose practical hints and suggestions are received (and
possibly ignored) by the compiler. [< Gr]
- precedence
The rules of conduct that, in the absence of other guidance, determine
what should happen first (i.e., in the absence of parentheses,
you always do multiplication before addition).
- preprocessing
What some other helper process did to transform the incoming data
into a form more suitable for the current process. Often done with an
incoming pipe. See also C preprocessor.
- procedure
A subroutine.
- process
An instance of a running program. Under multi-tasking systems like
UNIX, two or more separate processes could be running the same program
independently at the same time - in fact, the fork function is designed
to bring about this happy state of affairs. Under other operating
systems processes are sometimes called "tasks" or "jobs".
- protocol
In networking, an agreed-upon way of sending messages back and forth
so that neither correspondent will get too confused.
- pseudo literal
An operator that looks something like a literal, such as the
output-grabbing operator, `
command
`
.
- pseudo terminal
A thing that looks like an ordinary terminal to the computer, but instead
of being attached to a real terminal, is really attached to another
computer program, which is doing the pseudotyping.
- public domain
Something not owned by anybody. Perl is copyrighted, and is thus
not in the public domain - it's just freely available and
freely redistributable.
- PV
A "pointer value", which is Perl Internals Talk for a char*
.
- qualified
Possessing an explicit package name. The symbol $ex::loser
is
qualified; $loser
is unqualified.
- readable
With regard to files, one that has the proper permission bit set
to let you access the file. With regard to computer programs, one that's well enough written that
someone can come back later and have a chance of figuring out what
it's trying to do. Who knows, you might even have to come back and figure
out your own program.
- record
A set of related data values in a file or stream, often associated
with a unique key field. In UNIX, often commensurate with a line,
or a blank-line-delimited set of lines (a "paragraph"). Each line of
the /etc/passwd file is a record, keyed on login name, containing
information about that user.
- recursion
The art of defining something (at least partly) in terms of itself by
means of recursion,
which is a naughty no-no in dictionaries.
- reference
A place you look to find a pointer to information stored somewhere else. (See
indirection.) References come in two flavors, symbolic
references, and hard references.
- regular expression
A single entity with various interpretations, like an elephant. To a
computer scientist, it's a grammar for a little language in which some
strings are legal and others aren't. To normal people, it's a pattern
that you can use to find what you're looking for when it varies from
case to case. Example of a regular expression:
/Oh s.*t./
This pattern will match strings like "Oh say can you see by the dawn's early
light,"
and "Oh sit!"
. See the section "Regular Expressions"
in Chapter 2.
- regular file
A file that's not a directory, a device, a named
pipe or socket, or a symbolic link.
Perl uses the -f
file test
operator to identify regular files.
- relation
Jargon used by relational database folks to mean a file - albeit a
particular sort of file, tabular in form, in which all the tuples
(records) are of the same kind, each containing the same domains
(keys) and ranges (fields). The UNIX /etc/passwd file
is a relation keyed on login name. It's called a relation because it
relates keys and fields in much the same way as an hash associates
keys and values.
- relational operator
An operator that says whether a particular ordering relationship is
true about a pair of operands. Perl has both numeric and string
relational operators. See collating sequence.
- reserved words
A word with a specific, built-in meaning to a compiler, such as
if or delete. In many languages (not Perl) it's illegal to
use reserved words to name anything else. (Which is why they're
reserved, after all.) In Perl, you just can't use them to name
labels or filehandles. Also called "keywords".
- return value
The value produced by a subroutine or expression when
evaluated. In Perl, a return value may be either a list or a
scalar value. The subroutine call piglatin('bingo')
returns
the value "ingobay
".
- right shift
A bit shift that divides a number by some power of two.
- run-time
The time when Perl is actually doing what your script says to do, as
opposed to the earlier period of time when it was trying to figure out
whether what you said made any sense whatsoever. See also compile-time.
- run-time pattern
A pattern that contains one or more variables to be interpolated
before parsing the pattern as a regular expression, and that therefore
cannot be analyzed at compile time, but must be re-analyzed each time
the pattern match operator is evaluated. Run-time patterns are useful
but expensive.
- rvalue
A value that you might find on the right side of an
assignment. See also lvalue.
- scalar
A simple value, such as a number or string.
- scalar context
The situation in which an expression is expected by its
surroundings (the code calling it) to return a single value rather
than a list of values. See also context and list
context. A scalar context sometimes imposes additional constraints on the return
value - see string context and numeric context. Sometimes we
talk about a Boolean context inside conditionals, but this imposes no
additional constraints, since any scalar value, whether numeric or
string, is already true or false.
- scalar literal
A number or quoted string - an
actual value in the text of your program, as opposed to a
variable.
- scalar value
A value that happens to be a
scalar as opposed to a list.
- scalar variable
A variable prefixed with
$
that holds a single value.
- scope
How far away you can see a variable from, looking through one. Perl has
two visibility mechanisms: it does dynamic scoping of local
variables, meaning that the rest of the block, and any
subroutines that are called by the rest of the block, can see the
variables that are local to the block. Perl does lexical scoping
of my variables, meaning that the rest of the block can see the
variable, but other subroutines called by the block cannot see the
variable.
- script
A text file that is a program intended to be executed
directly rather than compiled to another form of file before
execution.
- sed
A venerable stream editor from which Perl derives some of its ideas.
- server
In networking, a process that either advertises a service or
just hangs around at a known location and waits for clients who
need service to get in touch with it.
- service
Something you do for someone else to make them happy, like giving them
the time of day (or of their life). On some UNIX machines, well-known
services are listed by the getservent function.
- setgid
Same as setuid, only having to do with giving away group privileges.
- setuid
Said of a program that runs with the privileges of its owner
rather than (as is usually the case) the privileges of whoever is running
it. Also describes the bit in the mode word (permission
flags) that implements the feature. This bit must be explicitly set
by the owner to implement this feature, and the program must be
written not to give away more privileges than it ought.
- shell
A command-line interpreter. The program that interactively
gives you a prompt, accepts one or more lines of input, and
executes the programs you mentioned, feeding each of them their proper
arguments and input data. Shells can also execute scripts
containing such commands. Under the UNIX operating system,
typical shells are the Bourne shell (/bin/sh), the C shell
(/bin/csh), and the Korn shell (/bin/ksh). Perl is not
strictly a shell because it's not interactive (although Perl programs
can be interactive).
- side effects
Something extra that happens when you evaluate an expression.
Nowadays it can refer to almost anything. For example, evaluating a simple
assignment statement typically has the "side effect" of assigning a value
to a variable. (And you thought assigning the value was your primary
intent in the first place!) Likewise, assigning a value to the special
variable $|
has the side effect of forcing a flush after every
write or print on the currently selected filehandle.
- signal handler
A subroutine that, instead of being content to be called in the
normal fashion, sits around waiting for a bolt out of the blue before it
will deign to execute. Under UNIX, bolts out of the blue are called
signals, and you send them with a kill command.
- single inheritance
The features you got from your mother, if she told you you don't have a
father. (See also inheritance, and multiple inheritance.)
In computer languages, the notion that classes reproduce
asexually, so that a given class can only have one direct ancestor or
base class. Perl enforces no such restriction.
- slice
A selection of array elements.
- socket
An endpoint for network communication between two processes, that
works much like a telephone. The most important thing about a socket is
its network address (like a phone number). Different kinds of
sockets have different kinds of addresses - some look like filenames, and
some don't.
- soft reference
See symbolic reference.
- standard error
The default output stream for making nasty remarks that don't belong in
standard output. Represented within a Perl program by the
filehandle STDERR
. You can use this stream explicitly, but the
operators die and warn write to your standard error stream
automatically.
- standard I/O
A standard C library for doing buffered input and output to the
operating system. (The "standard" of standard I/O is only marginally
related to the "standard" of standard input and output.) In general,
Perl relies on whatever implementation of standard I/O a given operating
system supplies, so the buffering characteristics of a Perl program on
one machine may not exactly match those on another machine. Normally
this only influences efficiency, not semantics. If your standard I/O
package is doing block buffering and you want it to flush the buffer
more often, just set the $| variable to a nonzero value.
- standard input
The default input stream for your program, which if possible shouldn't
care where its data is coming from. Represented within a Perl program
by the filehandle STDIN
.
- standard output
The default output stream for your program, which if possible shouldn't
care where its data is going. Represented within a Perl program by the
filehandle STDOUT
.
- stat structure
A special internal buffer in which Perl keeps the information about the
last file you requested information on.
- statement
A command to the computer about what to do next, like a step in a
recipe: "Add marmalade to batter and mix until mixed." Not to be
confused with a declaration, which doesn't tell the computer to do
anything, but just to learn something.
- static
Varying slowly, compared to something else. (Unfortunately, everything
is relatively stable compared to something else, except for certain
elementary particles, and we're not so sure about them.) In computers,
where things are supposed to vary rapidly, "static" has a derogatory
connotation, indicating a slightly dysfunctional variable,
subroutine,
or method. In
Perl culture, the word is considered to be politically incorrect.
- static method
See class method.
- static scoping
Same as lexical scoping.
- status
The value returned to the parent process when one of its
child processes dies. This value is placed in the special variable
$?. Its upper eight bits are the exit status of the defunct
process, and its lower eight bits identify the signal (if any) that the
process died from. On UNIX systems, this status value is the same as the
status word returned by wait(2). See system in Chapter 3.
- STDERR
See standard error.
- STDIN
See standard input.
- STDIO
See standard I/O.
- STDOUT
See standard output.
- string
A sequence of characters such as "He said !@#*&%@#*?\n." A string
does not have to be entirely printable.
- string context
The situation in which an expression is
expected by its surroundings (the code calling it) to return a string.
See also context and numeric context.
- struct
C keyword introducing a structure definition or name.
- structure
See data structure.
- subclass
See derived class.
- subroutine
A named
piece of program that can be invoked from elsewhere in the program in
order to accomplish some sub-goal of the program. A subroutine is often
parameterized to accomplish different but related things depending on
its input arguments. If the subroutine returns a meaningful
value, it is also called a function.
- subscript
A value that indicates the position of a particular array
element in an array.
- substring
A portion of a string, starting at a certain character position
(offset), and proceeding for a certain number of characters.
- superclass
See base class.
- superuser
The person whom the operating system will let do almost anything.
Typically your system administrator or someone pretending to be your
system administrator. On UNIX systems, the root user.
- SV
Short for "scalar value". But within the Perl interpreter every
thingy is treated as a kind of SV, in an object-oriented sort of
way. Every value inside Perl is passed around as an SV* pointer
in C. The SV struct knows its own "thingy type", and the code is
smart enough (we hope) not to try to call a hash function on a
subroutine.
- switch
An option you give on a command line to influence the way your program
works. In UNIX, these are usually introduced with a minus sign.
The word is also used as a nickname for a switch statement.
- switch clustering
The combining of multiple command line switches -a -b -c into
one switch -abc. In Perl, any switch with an additional argument
must be the last switch in a cluster.
- switch statement
A program construct that lets you evaluate an expression and,
based on the expression's value, do a multi-way branch to the
appropriate piece of code for that value. Also called a "case
structure", after the similar Pascal construct.
- symbol table
Where a compiler remembers symbols. A program
like Perl must somehow remember all the names of all the
variables, filehandles, and subroutines you've used.
It does this by placing the names in a symbol table, which is
implemented in Perl using a hash table. There is a separate
symbol table for each package, to give each package its own
namespace.
- symbolic debugger
A program that lets you step through the execution of your
program, stopping or printing things out here and there to see if
anything has gone wrong, and if so, what. The "symbolic" part just
means that you can talk to the debugger using the same symbols in which
your program is written.
- symbolic link
An alternate filename that points to the real filename.
Whenever the operating system is trying to parse a pathname containing
a symbolic link, it merely substitutes the real name and continues
parsing.
- symbolic reference
A variable whose value is the name of another variable or subroutine. By
dereferencing the first variable, you can get at the second one.
- syntax
From Greek, "with-arrangement". How things (particularly symbols)
are put together with each other.
- syntax tree
An internal representation of your program wherein lower-level
constructs dangle off the higher-level constructs enclosing them.
- system call
A subroutine call directly to the operating system. Many of
the important subroutines and functions you use aren't direct system
calls, but are built up in one or more layers above the system call level.
In general, Perl users don't need to worry about the distinction.
- tainted
Said of data that might be derived from the grubby hands of a user, and
thus unsafe for a secure program to rely on. Perl does taint checks if
you run a setuid program or use the -T switch.
- TCP
Short for Transmission Control Protocol. A protocol wrapped around the
Internet Protocol to make an unreliable packet transmission mechanism
appear to the application program to be a reliable stream of bytes.
(Well, usually.)
- text
Normally, a string or file containing primarily printable
characters. The word has been usurped in some UNIX circles to mean the
portion of your process that contains machine code to be executed.
- thingy
Something sort of like an object, that you may or may not know the name
of, but that you can refer to with circumlocutions like "that hangy-down
thingy that dangles in the back of your throat". Similarly in Perl, a value
that is sort of like an object, that you may or may not know the name of, but
that you can refer to via references from which the thingy dangles,
metaphorically speaking. Specifically, the sort of value that your reference
points to when you create a reference to a variable.
See anonymous, hard reference, and
object, not necessarily in that order.
- thread
An instance of running a program, but lighter weight than a process, in
that a process could have multiple threads running around in it, all
sharing the same process's resources. (If you're a dragonrider, see
Pern.)
- tie
The bond between a magical variable and its
implementation class. See the tie function in Chapters 3 and 5.
- tokenizing
Splitting up a program text into its separate words and symbols, each
of which is called a token. Also known as "lexing", in which case you
get "lexemes" instead of tokens.
- toolbox approach
The notion that, with a complete set of simple tools that work well
together, you can build almost anything you want. Which is fine if
you're assembling a tricycle, but if you're building a defranishizing
comboflux, you really want your own machine shop to build special tools
in. Perl is sort of a machine shop.
- true
See false. (And hold it up to a mirror for the secret message.)
- tuple
In the lingo of relational databases, a record or line
containing fields. See relation.
- type
See data type.
- type casting
Converting data explicitly from one type to another. C permits this. Perl does not
need it.
- typeglob
Used of a single identifier, prefaced with * (for example, *name
),
to stand for any or all of $name
, @name
, %name
,
&name
, or just name
.
How you use it determines whether it is interpreted as all of those, or only
one of them. See "Typeglobs and Filehandles" in Chapter 2.
- UID
A User ID. Often used in the context of file ownership.
- unary operator
An operator with only one operand, like !
or chdir.
Unary operators are usually prefix operators, that is, they precede
their operand. The ++
and --
operators can be either
prefix or postfix. (Of course, that does change their meaning.)
- undefined
Nobody has ever given this a reasonable definition. See also
defined.
- UNIX
A very large and constantly evolving language with several alternate and
largely incompatible syntaxes, in which anyone can define
anything any way they choose, and usually do. Speakers of this language
think it's easy to learn because it's so easily twisted to one's own
ends, but dialectical differences make tribal intercommunication nearly
impossible, and travelers are often reduced to a pidgin-like subset of
the language. To be universally understood, a UNIX shell programmer
must spend years of study in the art. Many have abandoned this
discipline and now communicate via an Esperanto-like language called
Perl. In ancient times UNIX was also used to refer to some code that a couple
of people at Bell Labs wrote to make use of a PDP-7 computer that wasn't
doing much of anything else at the time.
- unqualified
See qualified.
- value
This is hard to define. It's something like real data - the actual numbers
and strings that wander around in your program. But we don't really
need to define it. If you didn't know a value when you see it,
you wouldn't have this book. :-)
- variable
A named storage location that can hold any of various values, as your
program sees fit.
- variable interpolation
See interpolation.
- vector
Mathematical jargon for a list of scalar values.
- warning
A message printed to the STDERR
stream to the effect that something
might be wrong but it isn't worth blowing up over. See the warn
operator in Chapter 3.
- whitespace
A character that moves your cursor around but doesn't otherwise
put anything on your screen. Typically refers to any of the following: space, tab,
line feed, carriage return, form feed, or vertical tab.
- word
In normal "computerese", the piece of data of the size most efficiently
dealt with by your computer, typically 32 bits or so, give or take a few
powers of two. In UNIX culture, it more often refers to an
alphanumeric identifier, or to a string of non-whitespace characters bounded by
whitespace or line boundaries.
- working directory
Your current directory, from which relative pathnames are
interpreted by the operating system. The operating system knows
your current directory because you told it with a chdir, or
because you started out in the same place where your parent process was
when you were born.
- wrapper
A program that runs some other program for you, modifying some of its input
or output to better suit your purposes. More generally, just about anything
that wraps things up. And that just about wraps things up, except for
the excess.
- XS
An extraordinarily exported, expeditiously excellent, expressly eXternal
Subroutine, executed in existing C or C++, or in an exciting new extension
language called (exasperatingly) XS. Examine Chapter 6, Social Engineering, for the
exact explanation. Exeunt.