summaryrefslogtreecommitdiff
path: root/pod/perlglossary.pod
diff options
context:
space:
mode:
authorYitzchak Scott-Thoennes <sthoenna@efn.org>2005-06-30 20:10:50 -0700
committerRafael Garcia-Suarez <rgarciasuarez@gmail.com>2005-07-01 12:43:23 +0000
commit97a1d740bc3d862371168a73aa7c5fc749d8b2e3 (patch)
treeccac900b5dcaf83be5acd026afe0477b3b40ad19 /pod/perlglossary.pod
parent57ddaf2acd83324bde010fedf6d86f70fe4ec09e (diff)
downloadperl-97a1d740bc3d862371168a73aa7c5fc749d8b2e3.tar.gz
Add the perlglossary man page
Subject: [PATCH] perlglossary.pod Message-ID: <20050701101050.GA2448@efn.org> p4raw-id: //depot/perl@25037
Diffstat (limited to 'pod/perlglossary.pod')
-rw-r--r--pod/perlglossary.pod3331
1 files changed, 3331 insertions, 0 deletions
diff --git a/pod/perlglossary.pod b/pod/perlglossary.pod
new file mode 100644
index 0000000000..0474841516
--- /dev/null
+++ b/pod/perlglossary.pod
@@ -0,0 +1,3331 @@
+=head1 NAME
+
+perlglossary - Perl Glossary
+
+=head1 DESCRIPTION
+
+A glossary of terms (technical and otherwise) used in the Perl documentation.
+Other useful sources include the Free On-Line Dictionary of Computing
+L<http://foldoc.doc.ic.ac.uk/foldoc/index.html>, the Jargon File
+L<http://catb.org/~esr/jargon/>, and Wikipedia L<http://www.wikipedia.org/>.
+
+=head1 Terms
+
+=over 4
+
+=item accessor methods
+
+A C<method> used to indirectly inspect or update an C<object>'s
+state (its C<instance variable>s).
+
+=item actual arguments
+
+The C<scalar value>s that you supply to a C<function>
+or C<subroutine> when you call it. For instance, when you call
+C<power("puff")>, the string C<"puff"> is the actual argument. See
+also C<argument> and C<formal arguments>.
+
+=item address operator
+
+Some languages work directly with the memory addresses of values, but
+this can be like playing with fire. Perl provides a set of asbestos
+gloves for handling all memory management. The closest to an address
+operator in Perl is the backslash operator, but it gives you a C<hard
+reference>, which is much safer than a memory address.
+
+=item algorithm
+
+A well-defined sequence of steps, clearly enough explained that even a
+computer could do them.
+
+=item alias
+
+A nickname for something, which behaves in all ways as though you'd
+used the original name instead of the nickname. Temporary aliases are
+implicitly created in the loop variable for C<foreach> loops, in the
+C<$_> variable for L<map|perlfunc/map> or L<grep|perlfunc/grep>
+operators, in C<$a> and C<$b> during L<sort|perlfunc/sort>'s
+comparison function, and in each element of C<@_> for the C<actual
+arguments> of a subroutine call. Permanent aliases are explicitly
+created in C<package>s by C<import>ing symbols or by
+assignment to C<typeglob>s. Lexically scoped aliases for
+package variables are explicitly created by the L<our|perlfunc/our>
+declaration.
+
+=item 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 single vertical bar: C<|>. Alternatives in
+normal Perl expressions are separated with a double vertical bar:
+C<||>. Logical alternatives in C<Boolean> expressions are separated
+with either C<||> or C<or>.
+
+=item anonymous
+
+Used to describe a C<referent> that is not directly accessible
+through a named C<variable>. Such a referent must be indirectly
+accessible through at least one C<hard reference>. When the last
+hard reference goes away, the anonymous referent is destroyed without
+pity.
+
+=item architecture
+
+The kind of compluter you're working on, where one "kind" of computer
+means all those computers sharing a compatible machine language.
+Since Perl programs are (typically) simple text files, not executable
+images, a Perl program 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 C<platform> and C<operating
+system>.
+
+=item argument
+
+A piece of data supplied to a L<program|/executable file>,
+C<subroutine>, C<function>, or C<method> to tell it what it's
+supposed to do. Also called a "parameter".
+
+=item ARGV
+
+The name of the array containing the C<argument> C<vector> from the
+command line. If you use the empty C<E<lt>E<gt>> operator, C<ARGV> is
+the name of both the C<filehandle> used to traverse the arguments and
+the C<scalar> containing the name of the current input file.
+
+=item arithmetical operator
+
+A C<symbol> such as C<+> or C</> that tells Perl to do the arithmetic
+you were supposed to learn in grade school.
+
+=item array
+
+An ordered sequence of C<value>s, stored such that you can
+easily access any of the values using an integer C<subscript>
+that specifies the value's C<offset> in the sequence.
+
+=item array context
+
+An archaic expression for what is more correctly referred to as
+C<list context>.
+
+=item ASCII
+
+The American Standard Code for Information Interchange (a 7-bit
+character set adequate only for poorly representing English text).
+Often used loosely to describe the lowest 128 values of the various
+ISO-8859-X character sets, a bunch of mutually incompatible 8-bit
+codes best described as half ASCII. See also C<Unicode>.
+
+=item assertion
+
+A component of a C<regular expression> that must be true for the
+pattern to match but does not necessarily match any characters itself.
+Often used specifically to mean a C<zero width> assertion.
+
+=item assignment
+
+An C<operator> whose assigned mission in life is to change the value
+of a C<variable>.
+
+=item assignment operator
+
+Either a regular C<assignment>, or a compound C<operator> composed
+of an ordinary assignment and some other operator, that changes the
+value of a variable in place, that is, relative to its old value. For
+example, C<$a += 2> adds C<2> to C<$a>.
+
+=item associative array
+
+See C<hash>. Please.
+
+=item associativity
+
+Determines whether you do the left C<operator> first or the right
+C<operator> first when you have "A C<operator> B C<operator> C" and
+the two operators are of the same precedence. Operators like C<+> are
+left associative, while operators like C<**> are right associative.
+See L<perlop> for a list of operators and their associativity.
+
+=item asynchronous
+
+Said of events or activities whose relative temporal ordering is
+indeterminate because too many things are going on at once. Hence, an
+asynchronous event is one you didn't know when to expect.
+
+=item atom
+
+A C<regular expression> component potentially matching a
+C<substring> containing one or more characters and treated as an
+indivisible syntactic unit by any following C<quantifier>. (Contrast
+with an C<assertion> that matches something of C<zero width> and may
+not be quantified.)
+
+=item atomic operation
+
+When Democritus gave the word "atom" to the indivisible bits of
+matter, he meant literally something that could not be cut: I<a->
+(not) + I<tomos> (cuttable). An atomic operation is an action that
+can't be interrupted, not one forbidden in a nuclear-free zone.
+
+=item attribute
+
+A new feature that allows the declaration of C<variable>s
+and C<subroutine>s with modifiers as in C<sub foo : locked
+method>. Also, another name for an C<instance variable> of an
+C<object>.
+
+=item autogeneration
+
+A feature of C<operator overloading> of C<object>s, whereby
+the behavior of certain C<operator>s can be reasonably
+deduced using more fundamental operators. This assumes that the
+overloaded operators will often have the same relationships as the
+regular operators. See L<perlop>.
+
+=item autoincrement
+
+To add one to something automatically, hence the name of the the C<++>
+operator. To instead subtract one from something automatically is
+known as an "autodecrement".
+
+=item autoload
+
+To load on demand. (Also called "lazy" loading.) Specifically, to
+call an C<AUTOLOAD> subroutine on behalf of an undefined subroutine.
+
+=item autosplit
+
+To split a string automatically, as the B<-a> C<switch> does when
+running under B<-p> or B<-n> in order to emulate C<awk>. (See also
+the C<AutoSplit> module, which has nothing to do with the B<-a>
+switch, but a lot to do with autoloading.)
+
+=item autovivification
+
+A Greco-Roman word meaning "to bring oneself to life". In Perl,
+storage locations (C<lvalue>s) spontaneously generate
+themselves as needed, including the creation of any C<hard reference>
+values to point to the next level of storage. The assignment
+C<$a[5][5][5][5][5] = "quintet"> potentially creates five scalar
+storage locations, plus four references (in the first four scalar
+locations) pointing to four new anonymous arrays (to hold the last
+four scalar locations). But the point of autovivification is that you
+don't have to worry about it.
+
+=item AV
+
+Short for "array value", which refers to one of Perl's internal data
+types that holds an C<array>. The C<AV> type is a subclass of
+C<SV>.
+
+=item awk
+
+Descriptive editing term--short for "awkward". Also coincidentally
+refers to a venerable text-processing language from which Perl derived
+some of its high-level ideas.
+
+=back
+
+=over 4
+
+=item backreference
+
+A substring L<captured|/capturing> by a subpattern within
+unadorned parentheses in a C<regex>. Backslashed decimal numbers
+(C<\1>, C<\2>, etc.) later in the same pattern refer back to the
+corresponding subpattern in the current match. Outside the pattern,
+the numbered variables (C<$1>, C<$2>, etc.) continue to refer to these
+same values, as long as the pattern was the last successful match of
+the current dynamic scope.
+
+=item 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. Perl backtracks
+when it attempts to match patterns with a C<regular expression>, and
+its earlier attempts don't pan out. See L<perlre/Backtracking>.
+
+=item backward compatibility
+
+Means you can still run your old program because we didn't break any
+of the features or bugs it was relying on.
+
+=item bareword
+
+A word sufficiently ambiguous to be deemed illegal under C<use strict
+'subs'>. In the absence of that stricture, a bareword is treated as
+if quotes were around it.
+
+=item base class
+
+A generic C<object> type; that is, a C<class> from which other, more
+specific classes are derived genetically by C<inheritance>. Also
+called a "superclass" by people who respect their ancestors.
+
+=item big-endian
+
+From Swift: someone who eats eggs big end first. Also used of
+computers that store the most significant C<byte> of a word at a
+lower byte address than the least significant byte. Often considered
+superior to little-endian machines. See also C<little-endian>.
+
+=item binary
+
+Having to do with numbers represented in base 2. That means there's
+basically two numbers, 0 and 1. Also used to describe a "non-text
+file", presumably because such a file makes full use of all the binary
+bits in its bytes. With the advent of C<Unicode>, this distinction,
+already suspect, loses even more of its meaning.
+
+=item binary operator
+
+An C<operator> that takes two C<operand>s.
+
+=item bind
+
+To assign a specific C<network address> to a C<socket>.
+
+=item bit
+
+An integer in the range from 0 to 1, inclusive. The smallest possible
+unit of information storage. An eighth of a C<byte> or of a dollar.
+(The term "Pieces of Eight" comes from being able to split the old
+Spanish dollar into 8 bits, each of which still counted for money.
+That's why a 25-cent piece today is still "two bits".)
+
+=item 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 2.
+
+=item bit string
+
+A sequence of C<bit>s that is actually being thought of as a
+sequence of bits, for once.
+
+=item 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 C<referent> so that it can
+function as an C<object>, such as a WebCruncher object. See
+L<perlfunc/"bless">.
+
+=item block
+
+What a C<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 C<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.
+
+=item BLOCK
+
+A syntactic construct consisting of a sequence of Perl
+C<statement>s that is delimited by braces. The C<if> and
+C<while> statements are defined in terms of C<BLOCK>s, for instance.
+Sometimes we also say "block" to mean a lexical scope; that is, a
+sequence of statements that act like a C<BLOCK>, such as within an
+L<eval|perlfunc/eval> or a file, even though the statements aren't
+delimited by braces.
+
+=item block buffering
+
+A method of making input and output efficient by passing one C<block>
+at a time. By default, Perl does block buffering to disk files. See
+C<buffer> and C<command buffering>.
+
+=item Boolean
+
+A value that is either C<true> or C<false>.
+
+=item Boolean context
+
+A special kind of C<scalar context> used in conditionals to decide
+whether the C<scalar value> returned by an expression is C<true> or
+C<false>. Does not evaluate as either a string or a number. See
+C<context>.
+
+=item breakpoint
+
+A spot in your program where you've told the debugger to stop
+L<execution|/execute> so you can poke around and see whether anything
+is wrong yet.
+
+=item broadcast
+
+To send a C<datagram> to multiple destinations simultaneously.
+
+=item 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".
+
+=item bucket
+
+A location in a C<hash table> containing (potentially) multiple
+entries whose keys "hash" to the same hash value according to its hash
+function. (As internal policy, you don't have to worry about it,
+unless you're into internals, or policy.)
+
+=item buffer
+
+A temporary holding location for data. With C<block buffering>, the
+data is passed on to its destination whenever the buffer is full.
+With C<line buffering>, it's passed on whenever a complete line is
+received. With C<command buffering>, it's passed every time you do a
+L<print|perlfunc/print> command (or equivalent). If your output is
+unbuffered, the system processes it one byte at a time without the use
+of a holding area. This can be rather inefficient.
+
+=item built-in
+
+A C<function> that is predefined in the language. Even when hidden
+by C<overriding>, you can always get at a built-in function by
+L<qualifying|/qualified> its name with the C<CORE::> pseudo-package.
+
+=item bundle
+
+A group of related modules on C<CPAN>. (Also, sometimes refers to a
+group of command-line switches grouped into one C<switch cluster>.)
+
+=item byte
+
+A piece of data worth eight C<bit>s in most places.
+
+=item bytecode
+
+A pidgin-like language spoken among 'droids when they don't wish to
+reveal their orientation (see C<endian>). Named after some similar
+languages spoken (for similar reasons) between compilers and
+interpreters in the late 20th century. These languages are
+characterized by representing everything as a
+non-architecture-dependent sequence of bytes.
+
+=back
+
+=over 4
+
+=item C
+
+A language beloved by many for its inside-out C<type> definitions,
+inscrutable C<precedence> rules, and heavy C<overloading> of the
+function-call mechanism. (Well, actually, people first switched to C
+because they found lowercase identifiers easier to read than upper.)
+Perl is written in C, so it's not surprising that Perl borrowed a few
+ideas from it.
+
+=item C preprocessor
+
+The typical C compiler's first pass, which processes lines beginning
+with C<#> for conditional compilation and macro definition and does
+various manipulations of the program text based on the current
+definitions. Also known as I<cpp>(1).
+
+=item call by reference
+
+An C<argument>-passing mechanism in which the C<formal arguments>
+refer directly to the C<actual arguments>, and the C<subroutine> can
+change the actual arguments by changing the formal arguments. That
+is, the formal argument is an C<alias> for the actual argument. See
+also C<call by value>.
+
+=item call by value
+
+An C<argument>-passing mechanism in which the C<formal arguments>
+refer to a copy of the C<actual arguments>, and the C<subroutine>
+cannot change the actual arguments by changing the formal arguments.
+See also C<call by reference>.
+
+=item callback
+
+A C<handler> that you register with some other part of your program
+in the hope that the other part of your program will C<trigger> your
+handler when some event of interest transpires.
+
+=item canonical
+
+Reduced to a standard form to facilitate comparison.
+
+=item capturing
+
+The use of parentheses around a C<subpattern> in a C<regular
+expression> to store the matched C<substring> as a C<backreference>.
+(Captured strings are also returned as a list in C<list context>.)
+
+=item character
+
+A small integer representative of a unit of orthography.
+Historically, characters were usually stored as fixed-width integers
+(typically in a byte, or maybe two, depending on the character set),
+but with the advent of UTF-8, characters are often stored in a
+variable number of bytes depending on the size of the integer that
+represents the character. Perl manages this transparently for you,
+for the most part.
+
+=item character class
+
+A square-bracketed list of characters used in a C<regular expression>
+to indicate that any character of the set may occur at a given point.
+Loosely, any predefined set of characters so used.
+
+=item character property
+
+A predefined C<character class> matchable by the C<\p>
+C<metasymbol>. Many standard properties are defined for C<Unicode>.
+
+=item circumfix operator
+
+An C<operator> that surrounds its C<operand>, like the angle
+operator, or parentheses, or a hug.
+
+=item class
+
+A user-defined C<type>, implemented in Perl via a C<package> that
+provides (either directly or by inheritance) C<method>s (that
+is, C<subroutine>s) to handle C<instance>s of
+the class (its C<object>s). See also C<inheritance>.
+
+=item class method
+
+A C<method> whose C<invocant> is a C<package> name, not an
+C<object> reference. A method associated with the class as a whole.
+
+=item client
+
+In networking, a C<process> that initiates contact with a C<server>
+process in order to exchange data and perhaps receive a service.
+
+=item cloister
+
+A C<cluster> used to restrict the scope of a C<regular expression
+modifier>.
+
+=item closure
+
+An C<anonymous> subroutine that, when a reference to it is generated
+at run time, keeps track of the identities of externally visible
+C<lexical variable>s even after those lexical
+variables have supposedly gone out of C<scope>. They're called
+"closures" because this sort of behavior gives mathematicians a sense
+of closure.
+
+=item cluster
+
+A parenthesized C<subpattern> used to group parts of a C<regular
+expression> into a single C<atom>.
+
+=item CODE
+
+The word returned by the L<ref|perlfunc/ref> function when you apply
+it to a reference to a subroutine. See also C<CV>.
+
+=item code generator
+
+A system that writes code for you in a low-level language, such as
+code to implement the backend of a compiler. See C<program
+generator>.
+
+=item code subpattern
+
+A C<regular expression> subpattern whose real purpose is to execute
+some Perl code, for example, the C<(?{...})> and C<(??{...})>
+subpatterns.
+
+=item collating sequence
+
+The order into which C<character>s sort. This is used by
+C<string> comparison routines to decide, for example, where in this
+glossary to put "collating sequence".
+
+=item command
+
+In C<shell> programming, the syntactic combination of a program name
+and its arguments. More loosely, anything you type to a shell (a
+command interpreter) that starts it doing something. Even more
+loosely, a Perl C<statement>, which might start with a C<label> and
+typically ends with a semicolon.
+
+=item command buffering
+
+A mechanism in Perl that lets you store up the output of each Perl
+C<command> and then flush it out as a single request to the
+C<operating system>. It's enabled by setting the C<$|>
+(C<$AUTOFLUSH>) variable to a true 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 C<file> or C<pipe> is to use
+C<block buffering>.
+
+=item command name
+
+The name of the program currently executing, as typed on the command
+line. In C, the C<command> name is passed to the program as the
+first command-line argument. In Perl, it comes in separately as
+C<$0>.
+
+=item command-line arguments
+
+The C<value>s you supply along with a program name when you
+tell a C<shell> to execute a C<command>. These values are passed to
+a Perl program through C<@ARGV>.
+
+=item comment
+
+A remark that doesn't affect the meaning of the program. In Perl, a
+comment is introduced by a C<#> character and continues to the end of
+the line.
+
+=item compilation unit
+
+The C<file> (or C<string>, in the case of L<eval|perlfunc/eval>)
+that is currently being compiled.
+
+=item compile phase
+
+Any time before Perl starts running your main program. See also
+C<run phase>. Compile phase is mostly spent in C<compile time>, but
+may also be spent in C<run time> when C<BEGIN> blocks,
+L<use|perlfunc/use> declarations, or constant subexpressions are being
+evaluated. The startup and import code of any L<use|perlfunc/use>
+declaration is also run during compile phase.
+
+=item compile time
+
+The time when Perl is trying to make sense of your code, as opposed to
+when it thinks it knows what your code means and is merely trying to
+do what it thinks your code says to do, which is C<run time>.
+
+=item 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 I<perl>
+program is not a compiler by this definition, but it does contain a
+kind of compiler that takes a program and turns it into a more
+executable form (C<syntax tree>s) within the I<perl>
+process itself, which the C<interpreter> then interprets. There are,
+however, extension C<module>s to get Perl to act more like a
+"real" compiler. See L<O>.
+
+=item composer
+
+A "constructor" for a C<referent> that isn't really an C<object>,
+like an anonymous array or a hash (or a sonata, for that matter). 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 L<perlref/Making
+References>.
+
+=item concatenation
+
+The process of gluing one cat's nose to another cat's tail. Also, a
+similar operation on two C<string>s.
+
+=item conditional
+
+Something "iffy". See C<Boolean context>.
+
+=item 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 C<client> and a C<server>.
+
+=item construct
+
+As a noun, a piece of syntax made up of smaller pieces. As a
+transitive verb, to create an C<object> using a C<constructor>.
+
+=item constructor
+
+Any C<class method>, instance C<method>, or C<subroutine>
+that composes, initializes, blesses, and returns an C<object>.
+Sometimes we use the term loosely to mean a C<composer>.
+
+=item context
+
+The surroundings, or environment. The context given by the
+surrounding code determines what kind of data a particular
+C<expression> is expected to return. The three primary contexts are
+C<list context>, C<scalar context>, and C<void context>. Scalar
+context is sometimes subdivided into C<Boolean context>, C<numeric
+context>, C<string context>, and C<void context>. There's also a
+"don't care" scalar context (which is dealt with in Programming Perl,
+Third Edition, Chapter 2, "Bits and Pieces" if you care).
+
+=item continuation
+
+The treatment of more than one physical C<line> as a single logical
+line. C<Makefile> lines are continued by putting a backslash before
+the C<newline>. Mail headers as defined by RFC 822 are continued by
+putting a space or tab I<after> the newline. In general, lines in
+Perl do not need any form of continuation mark, because C<whitespace>
+(including newlines) is gleefully ignored. Usually.
+
+=item core dump
+
+The corpse of a C<process>, in the form of a file left in the
+C<working directory> of the process, usually as a result of certain
+kinds of fatal error.
+
+=item CPAN
+
+The Comprehensive Perl Archive Network. (See L<perlfaq2/What modules and extensions are available for Perl? What is CPAN? What does CPANE<sol>srcE<sol>... mean?>).
+
+=item cracker
+
+Someone who breaks security on computer systems. A cracker may be a
+true C<hacker> or only a C<script kiddie>.
+
+=item current package
+
+The C<package> in which the current statement is compiled. Scan
+backwards in the text of your program through the current L<lexical
+scope|/lexical scoping> or any enclosing lexical scopes till you find
+a package declaration. That's your current package name.
+
+=item current working directory
+
+See C<working directory>.
+
+=item currently selected output channel
+
+The last C<filehandle> that was designated with
+C<select(FILEHANDLE)>; C<STDOUT>, if no filehandle has been selected.
+
+=item CV
+
+An internal "code value" typedef, holding a C<subroutine>. The C<CV>
+type is a subclass of C<SV>.
+
+=back
+
+=over 4
+
+=item dangling statement
+
+A bare, single C<statement>, without any braces, hanging off an C<if>
+or C<while> conditional. C allows them. Perl doesn't.
+
+=item 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.
+
+=item 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 various mathematical
+operations that you can do on the numbers but would make little sense
+on, say, a string such as C<"Kilroy">. Strings have their own
+operations, such as C<concatenation>. Compound types made of a
+number of smaller pieces generally have operations to compose and
+decompose them, and perhaps to rearrange them. An C<object>
+that models things in the real world often has operations that
+correspond to real activities. For instance, if you model an
+elevator, your elevator object might have an C<open_door()>
+C<method>.
+
+=item datagram
+
+A packet of data, such as a C<UDP> message, that (from the viewpoint
+of the programs involved) can be sent independently over the network.
+(In fact, all packets are sent independently at the C<IP> level, but
+C<stream> protocols such as C<TCP> hide this from your program.)
+
+=item DBM
+
+Stands for "Data Base Management" routines, a set of routines that
+emulate an C<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 program to keep a persistent
+C<hash> across multiple invocations. You can L<tie|perlfunc/tie>
+your hash variables to various DBM implementations--see L<AnyDBM_File>
+and L<DB_File>.
+
+=item declaration
+
+An C<assertion> that states something exists and perhaps describes
+what it's like, without giving 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
+C<statement> for its opposite. Note that some declarations also
+function as statements. Subroutine declarations also act as
+definitions if a body is supplied.
+
+=item decrement
+
+To subtract a value from a variable, as in "decrement C<$x>" (meaning
+to remove 1 from its value) or "decrement C<$x> by 3".
+
+=item default
+
+A C<value> chosen for you if you don't supply a value of your own.
+
+=item 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 C<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
+C<false> and L<perlfunc/defined>.
+
+=item delimiter
+
+A C<character> or C<string> that sets bounds to an arbitrarily-sized
+textual object, not to be confused with a C<separator> or
+C<terminator>. "To delimit" really just means "to surround" or "to
+enclose" (like these parentheses are doing).
+
+=item dereference
+
+A fancy computer science term meaning "to follow a C<reference> to
+what it points to". The "de" part of it refers to the fact that
+you're taking away one level of C<indirection>.
+
+=item derived class
+
+A C<class> that defines some of its C<method>s in terms of a
+more generic class, called a C<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,
+which is kind of classy.
+
+=item descriptor
+
+See C<file descriptor>.
+
+=item destroy
+
+To deallocate the memory of a C<referent> (first triggering its
+C<DESTROY> method, if it has one).
+
+=item destructor
+
+A special C<method> that is called when an C<object> is thinking
+about C<destroy>ing itself. A Perl program's C<DESTROY>
+method doesn't do the actual destruction; Perl just
+C<trigger>s the method in case the C<class> wants to do any
+associated cleanup.
+
+=item device
+
+A whiz-bang hardware gizmo (like a disk or tape drive or a modem or a
+joystick or a mouse) attached to your computer, that the C<operating
+system> tries to make look like a C<file> (or a bunch of files).
+Under Unix, these fake files tend to live in the I</dev> directory.
+
+=item directive
+
+A C<pod> directive. See L<perlpod>.
+
+=item directory
+
+A special file that contains other files. Some L<operating
+systems|/operating system> call these "folders", "drawers", or
+"catalogs".
+
+=item directory handle
+
+A name that represents a particular instance of opening a directory to
+read it, until you close it. See the L<opendir|perlfunc/opendir>
+function.
+
+=item dispatch
+
+To send something to its correct destination. Often used
+metaphorically to indicate a transfer of programmatic control to a
+destination selected algorithmically, often by lookup in a table of
+function C<reference>s or, in the case of object
+C<method>s, by traversing the inheritance tree looking for the
+most specific definition for the method.
+
+=item distribution
+
+A standard, bundled release of a system of software. The default
+usage implies source code is included. If that is not the case, it
+will be called a "binary-only" distribution.
+
+=item dweomer
+
+An enchantment, illusion, phantasm, or jugglery. Said when Perl's
+magical C<dwimmer> effects don't do what you expect, but rather seem
+to be the product of arcane dweomercraft, sorcery, or wonder working.
+[From Old English]
+
+=item dwimmer
+
+DWIM is an acronym for "Do What I Mean", the principle that something
+should just do what you want it to do without an undue amount of fuss.
+A bit of code that does "dwimming" is a "dwimmer". Dwimming can
+require a great deal of behind-the-scenes magic, which (if it doesn't
+stay properly behind the scenes) is called a C<dweomer> instead.
+
+=item dynamic scoping
+
+Dynamic scoping works over a dynamic scope, making variables visible
+throughout the rest of the C<block> in which they are first used and
+in any C<subroutine>s that are called by the rest of the
+block. Dynamically scoped variables can have their values temporarily
+changed (and implicitly restored later) by a L<local|perlfunc/local>
+operator. (Compare C<lexical scoping>.) Used more loosely to mean
+how a subroutine that is in the middle of calling another subroutine
+"contains" that subroutine at C<run time>.
+
+=back
+
+=over 4
+
+=item eclectic
+
+Derived from many sources. Some would say I<too> many.
+
+=item element
+
+A basic building block. When you're talking about an C<array>, it's
+one of the items that make up the array.
+
+=item embedding
+
+When something is contained in something else, particularly when that
+might be considered surprising: "I've embedded a complete Perl
+interpreter in my editor!"
+
+=item empty subclass test
+
+The notion that an empty C<derived class> should behave exactly like
+its C<base class>.
+
+=item en passant
+
+When you change a C<value> as it is being copied. [From French, "in
+passing", as in the exotic pawn-capturing maneuver in chess.]
+
+=item encapsulation
+
+The veil of abstraction separating the C<interface> from the
+C<implementation> (whether enforced or not), which mandates that all
+access to an C<object>'s state be through C<method>s alone.
+
+=item endian
+
+See C<little-endian> and C<big-endian>.
+
+=item environment
+
+The collective set of C<environment variable>s
+your C<process> inherits from its parent. Accessed via C<%ENV>.
+
+=item environment variable
+
+A mechanism by which some high-level agent such as a user can pass its
+preferences down to its future offspring (child C<process>es,
+grandchild processes, great-grandchild processes, and so on). Each
+environment variable is a C<key>/C<value> pair, like one entry in a
+C<hash>.
+
+=item EOF
+
+End of File. Sometimes used metaphorically as the terminating string
+of a C<here document>.
+
+=item errno
+
+The error number returned by a C<syscall> when it fails. Perl refers
+to the error by the name C<$!> (or C<$OS_ERROR> if you use the English
+module).
+
+=item error
+
+See C<exception> or C<fatal error>.
+
+=item escape sequence
+
+See C<metasymbol>.
+
+=item exception
+
+A fancy term for an error. See C<fatal error>.
+
+=item exception handling
+
+The way a program responds to an error. The exception handling
+mechanism in Perl is the L<eval|perlfunc/eval> operator.
+
+=item exec
+
+To throw away the current C<process>'s program and replace it with
+another without exiting the process or relinquishing any resources
+held (apart from the old memory image).
+
+=item executable file
+
+A C<file> that is specially marked to tell the C<operating system>
+that it's okay to run this file as a program. Usually shortened to
+"executable".
+
+=item execute
+
+To run a L<program|/executable file> or C<subroutine>. (Has nothing
+to do with the L<kill|perlfunc/kill> built-in, unless you're trying to
+run a C<signal handler>.)
+
+=item 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.
+
+=item exit status
+
+See C<status>.
+
+=item export
+
+To make symbols from a C<module> available for C<import> by other modules.
+
+=item expression
+
+Anything you can legally say in a spot where a C<value> is required.
+Typically composed of C<literal>s, C<variable>s,
+C<operator>s, C<function>s, and C<subroutine>
+calls, not necessarily in that order.
+
+=item extension
+
+A Perl module that also pulls in compiled C or C++ code. More
+generally, any experimental option that can be compiled into Perl,
+such as multithreading.
+
+=back
+
+=over 4
+
+=item false
+
+In Perl, any value that would look like C<""> or C<"0"> if evaluated
+in a string context. Since undefined values evaluate to C<"">, all
+undefined values are false, but not all false values are undefined.
+
+=item FAQ
+
+Frequently Asked Question (although not necessarily frequently
+answered, especially if the answer appears in the Perl FAQ shipped
+standard with Perl).
+
+=item fatal error
+
+An uncaught C<exception>, which causes termination of the C<process>
+after printing a message on your C<standard error> stream. Errors
+that happen inside an L<eval|perlfunc/eval> are not fatal. Instead,
+the L<eval|perlfunc/eval> terminates after placing the exception
+message in the C<$@> (C<$EVAL_ERROR>) variable. You can try to
+provoke a fatal error with the L<die|perlfunc/die> operator (known as
+throwing or raising an exception), but this may be caught by a
+dynamically enclosing L<eval|perlfunc/eval>. If not caught, the
+L<die|perlfunc/die> becomes a fatal error.
+
+=item field
+
+A single piece of numeric or string data that is part of a longer
+C<string>, C<record>, or C<line>. Variable-width fields are
+usually split up by C<separator>s (so use
+L<split|perlfunc/split> to extract the fields), while fixed-width
+fields are usually at fixed positions (so use
+L<unpack|perlfunc/unpack>). "fields" are also called C<instance variable>s.
+
+=item FIFO
+
+First In, First Out. See also C<LIFO>. Also, a nickname for a
+C<named pipe>.
+
+=item file
+
+A named collection of data, usually stored on disk in a C<directory>
+in a C<filesystem>. Roughly like a document, if you're into office
+metaphors. In modern filesystems, you can actually give a file more
+than one name. Some files have special properties, like directories
+and devices.
+
+=item file descriptor
+
+The little number the C<operating system> uses to keep track of which
+opened C<file> you're talking about. Perl hides the file descriptor
+inside a C<standard IE<sol>O> stream and then attaches the stream to
+a C<filehandle>.
+
+=item file test operator
+
+A built-in unary operator that you use to determine whether something
+is C<true> about a file, such as C<-o $filename> to test whether
+you're the owner of the file.
+
+=item fileglob
+
+A "wildcard" match on C<filename>s. See the
+L<glob|perlfunc/glob> function.
+
+=item filehandle
+
+An identifier (not necessarily related to the real name of a file)
+that represents a particular instance of opening a file until you
+close it. If you're going to open and close several different files
+in succession, it's fine to open each of them with the same
+filehandle, so you don't have to write out separate code to process
+each file.
+
+=item filename
+
+One name for a file. This name is listed in a C<directory>, and you
+can use it in an L<open|perlfunc/open> to tell the C<operating
+system> exactly which file you want to open, and associate the file
+with a C<filehandle> which will carry the subsequent identity of that
+file in your program, until you close it.
+
+=item filesystem
+
+A set of L<directories|/directory> and C<file>s residing on a
+partition of the disk. Sometimes known as a "partition". You can
+change the file's name or even move a file around from directory to
+directory within a filesystem without actually moving the file itself,
+at least under Unix.
+
+=item filter
+
+A program designed to take a C<stream> of input and transform it into
+a stream of output.
+
+=item flag
+
+We tend to avoid this term because it means so many things. It may
+mean a command-line C<switch> that takes no argument
+itself (such as Perl's B<-n> and B<-p>
+flags) or, less frequently, a single-bit indicator (such as the
+C<O_CREAT> and C<O_EXCL> flags used in
+L<sysopen|perlfunc/sysopen>).
+
+=item 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 (sometimes called "floats"), when it can't get away with
+using C<integer>s. Floating-point numbers are mere
+approximations of real numbers.
+
+=item flush
+
+The act of emptying a C<buffer>, often before it's full.
+
+=item FMTEYEWTK
+
+Far More Than Everything You Ever Wanted To Know. An exhaustive
+treatise on one narrow topic, something of a super-C<FAQ>. See Tom
+for far more.
+
+=item fork
+
+To create a child C<process> identical to the parent process at its
+moment of conception, at least until it gets ideas of its own. A
+thread with protected memory.
+
+=item formal arguments
+
+The generic names by which a C<subroutine> knows its
+C<argument>s. In many languages, formal arguments are
+always given individual names, but in Perl, the formal arguments are
+just the elements of an array. The formal arguments to a Perl program
+are C<$ARGV[0]>, C<$ARGV[1]>, and so on. Similarly, the formal
+arguments to a Perl subroutine are C<$_[0]>, C<$_[1]>, and so on. You
+may give the arguments individual names by assigning the values to a
+L<my|perlfunc/my> list. See also C<actual arguments>.
+
+=item 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.
+
+=item 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).
+
+=item freely redistributable
+
+Means you're not in legal trouble if you give a bootleg copy of it to
+your friends and we find out about it. In fact, we'd rather you gave
+a copy to all your friends.
+
+=item freeware
+
+Historically, any software that you give away, particularly if you
+make the source code available as well. Now often called C<open
+source software>. Recently there has been a trend to use the term in
+contradistinction to C<open source software>, to refer only to free
+software released under the Free Software Foundation's GPL (General
+Public License), but this is difficult to justify etymologically.
+
+=item function
+
+Mathematically, a mapping of each of a set of input values to a
+particular output value. In computers, refers to a C<subroutine> or
+C<operator> that returns a C<value>. It may or may not have input
+values (called C<argument>s).
+
+=item funny character
+
+Someone like Larry, or one of his peculiar friends. Also refers to
+the strange prefixes that Perl requires as noun markers on its
+variables.
+
+=item garbage collection
+
+A misnamed feature--it should be called, "expecting your mother to
+pick up after you". Strictly speaking, Perl doesn't do this, but it
+relies on a reference-counting mechanism to keep things tidy.
+However, we rarely speak strictly and will often refer to the
+reference-counting scheme as a form of garbage collection. (If it's
+any comfort, when your interpreter exits, a "real" garbage collector
+runs to make sure everything is cleaned up if you've been messy with
+circular references and such.)
+
+=back
+
+=over 4
+
+=item GID
+
+Group ID--in Unix, the numeric group ID that the C<operating system>
+uses to identify you and members of your C<group>.
+
+=item glob
+
+Strictly, the shell's C<*> 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. See also C<fileglob> and C<typeglob>.
+
+=item global
+
+Something you can see from anywhere, usually used of
+C<variable>s and C<subroutine>s that are visible
+everywhere in your program. In Perl, only certain special variables
+are truly global--most variables (and all subroutines) exist only in
+the current C<package>. Global variables can be declared with
+L<our|perlfunc/our>. See L<perlfunc/our>.
+
+=item global destruction
+
+The C<garbage collection> of globals (and the running of any
+associated object destructors) that takes place when a Perl
+C<interpreter> is being shut down. Global destruction should not be
+confused with the Apocalypse, except perhaps when it should.
+
+=item glue language
+
+A language such as Perl that is good at hooking things together that
+weren't intended to be hooked together.
+
+=item granularity
+
+The size of the pieces you're dealing with, mentally speaking.
+
+=item greedy
+
+A C<subpattern> whose C<quantifier> wants to match as many things as
+possible.
+
+=item grep
+
+Originally from the old Unix editor command for "Globally search for a
+Regular Expression and Print it", now used in the general sense of any
+kind of search, especially text searches. Perl has a built-in
+L<grep|perlfunc/grep> function that searches a list for elements
+matching any given criterion, whereas the C<grep>(1) program searches
+for lines matching a C<regular expression> in one or more files.
+
+=item group
+
+A set of users of which you are a member. In some operating systems
+(like Unix), you can give certain file access permissions to other
+members of your group.
+
+=item GV
+
+An internal "glob value" typedef, holding a C<typeglob>. The C<GV>
+type is a subclass of C<SV>.
+
+=back
+
+=over 4
+
+=item hacker
+
+Someone who is brilliantly persistent in solving technical problems,
+whether these involve golfing, fighting orcs, or programming. Hacker
+is a neutral term, morally speaking. Good hackers are not to be
+confused with evil C<cracker>s or clueless L<script
+kiddies|/script kiddie>. If you confuse them, we will presume that
+you are either evil or clueless.
+
+=item handler
+
+A C<subroutine> or C<method> that is called by Perl when your
+program needs to respond to some internal event, such as a C<signal>,
+or an encounter with an operator subject to C<operator overloading>.
+See also C<callback>.
+
+=item hard reference
+
+A C<scalar> C<value> containing the actual address of a
+C<referent>, such that the referent's C<reference> count accounts
+for it. (Some hard references are held internally, such as the
+implicit reference from one of a C<typeglob>'s variable slots to its
+corresponding referent.) A hard reference is different from a
+C<symbolic reference>.
+
+=item hash
+
+An unordered association of C<key>/C<value> pairs, stored such that
+you can easily use a string C<key> to look up its associated data
+C<value>. 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
+septisyllabically called an "associative array", which is a pretty
+good reason for simply calling it a "hash" instead.
+
+=item hash table
+
+A data structure used internally by Perl for implementing associative
+arrays (hashes) efficiently. See also C<bucket>.
+
+=item 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 I<.h> extension. Perl doesn't really have
+header files, though historically Perl has sometimes used translated
+I<.h> files with a I<.ph> extension. See L<perlfunc/require>.
+(Header files have been superseded by the C<module> mechanism.)
+
+=item here document
+
+So called because of a similar construct in C<shell>s that
+pretends that the C<line>s following the C<command> are a
+separate C<file> to be fed to the command, up to some terminating
+string. In Perl, however, it's just a fancy form of quoting.
+
+=item hexadecimal
+
+A number in base 16, "hex" for short. The digits for 10 through 16
+are customarily represented by the letters C<a> through C<f>.
+Hexadecimal constants in Perl start with C<0x>. See also
+C<perlfunc/hex>.
+
+=item home directory
+
+The directory you are put into when you log in. On a Unix system, the
+name is often placed into C<$ENV{HOME}> or C<$ENV{LOGDIR}> by
+I<login>, but you can also find it with C<(getpwuid($E<lt>))[7]>.
+(Some platforms do not have a concept of a home directory.)
+
+=item host
+
+The computer on which a program or other data resides.
+
+=item 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 C<laziness> and C<impatience>.
+
+=item HV
+
+Short for a "hash value" typedef, which holds Perl's internal
+representation of a hash. The C<HV> type is a subclass of C<SV>.
+
+=back
+
+=over 4
+
+=item 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. (Perl
+also has more complicated names, such as C<qualified> names.)
+
+=item 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 C<laziness> and C<hubris>.
+
+=item implementation
+
+How a piece of code actually goes about doing its job. Users of the
+code should not count on implementation details staying the same
+unless they are part of the published C<interface>.
+
+=item import
+
+To gain access to symbols that are exported from another module. See
+L<perlfunc/use>.
+
+=item increment
+
+To increase the value of something by 1 (or by some other number, if
+so specified).
+
+=item indexing
+
+In olden days, the act of looking up a C<key> in an actual index
+(such as a phone book), but now merely the act of using any kind of
+key or position to find the corresponding C<value>, even if no index
+is involved. Things have degenerated to the point that Perl's
+L<index|perlfunc/index> function merely locates the position (index)
+of one string in another.
+
+=item indirect filehandle
+
+An C<expression> that evaluates to something that can be used as a
+C<filehandle>: a C<string> (filehandle name), a C<typeglob>, a
+typeglob C<reference>, or a low-level C<IO> object.
+
+=item 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, C<print STDOUT "$foo\n";> can be understood as "verb
+indirect-object object" where C<STDOUT> is the recipient of the
+L<print|perlfunc/print> action, and C<"$foo"> is the object being
+printed. Similarly, when invoking a C<method>, you might place the
+invocant between the method and its arguments:
+
+ $gollum = new Pathetic::Creature "Smeagol";
+ give $gollum "Fisssssh!";
+ give $gollum "Precious!";
+
+=item indirect object slot
+
+The syntactic position falling between a method call and its arguments
+when using the indirect object invocation syntax. (The slot is
+distinguished by the absence of a comma between it and the next
+argument.) C<STDERR> is in the indirect object slot here:
+
+ print STDERR "Awake! Awake! Fear, Fire,
+ Foes! Awake!\n";
+
+=item indirection
+
+If something in a program isn't the value you're looking for but
+indicates where the value is, that's indirection. This can be done
+with either C<symbolic reference>s or L<hard
+references|/hard reference>.
+
+=item infix
+
+An C<operator> that comes in between its C<operand>s, such
+as multiplication in C<24 * 7>.
+
+=item inheritance
+
+What you get from your ancestors, genetically or otherwise. If you
+happen to be a C<class>, your ancestors are called L<base
+classes|/base class> and your descendants are called L<derived
+classes|/derived class>. See C<single inheritance> and C<multiple
+inheritance>.
+
+=item instance
+
+Short for "an instance of a class", meaning an C<object> of that C<class>.
+
+=item instance variable
+
+An C<attribute> of an C<object>; data stored with the particular
+object rather than with the class as a whole.
+
+=item integer
+
+A number with no fractional (decimal) part. A counting number, like
+1, 2, 3, and so on, but including 0 and the negatives.
+
+=item interface
+
+The services a piece of code promises to provide forever, in contrast to
+its C<implementation>, which it should feel free to change whenever it
+likes.
+
+=item interpolation
+
+The insertion of a scalar or list value somewhere in the middle of
+another value, such that it appears to have been there all along. In
+Perl, variable interpolation happens in double-quoted strings and
+patterns, and list interpolation occurs when constructing the list of
+values to pass to a list operator or other such construct that takes a
+C<LIST>.
+
+=item 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 C<compiler>s 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 (C<syntax tree>s) within the I<perl> process itself,
+which the Perl C<run time> system then interprets.
+
+=item invocant
+
+The agent on whose behalf a C<method> is invoked. In a C<class>
+method, the invocant is a package name. In an C<instance> method,
+the invocant is an object reference.
+
+=item invocation
+
+The act of calling up a deity, daemon, program, method, subroutine, or
+function to get it do what you think it's supposed to do. We usually
+"call" subroutines but "invoke" methods, since it sounds cooler.
+
+=item I/O
+
+Input from, or output to, a C<file> or C<device>.
+
+=item IO
+
+An internal I/O object. Can also mean C<indirect object>.
+
+=item IP
+
+Internet Protocol, or Intellectual Property.
+
+=item IPC
+
+Interprocess Communication.
+
+=item is-a
+
+A relationship between two C<object>s 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
+C<base class> and a specific C<derived class>. Oddly enough,
+Platonic classes don't always have Platonic relationships--see
+C<inheritance>.
+
+=item iteration
+
+Doing something repeatedly.
+
+=item iterator
+
+A special programming gizmo that keeps track of where you are in
+something that you're trying to iterate over. The C<foreach> loop in
+Perl contains an iterator; so does a hash, allowing you to
+L<each|perlfunc/each> through it.
+
+=item IV
+
+The integer four, not to be confused with six, Tom's favorite editor.
+IV also means an internal Integer Value of the type a C<scalar> can
+hold, not to be confused with an C<NV>.
+
+=back
+
+=over 4
+
+=item JAPH
+
+"Just Another Perl Hacker," a clever but cryptic bit of Perl code that
+when executed, evaluates to that string. Often used to illustrate a
+particular Perl feature, and something of an ungoing Obfuscated Perl
+Contest seen in Usenix signatures.
+
+=back
+
+=over 4
+
+=item key
+
+The string index to a C<hash>, used to look up the C<value>
+associated with that key.
+
+=item keyword
+
+See C<reserved words>.
+
+=back
+
+=over 4
+
+=item label
+
+A name you give to a C<statement> so that you can talk about that
+statement elsewhere in the program.
+
+=item 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 C<impatience> and
+C<hubris>.
+
+=item left shift
+
+A C<bit shift> that multiplies the number by some power of 2.
+
+=item leftmost longest
+
+The preference of the C<regular expression> engine to match the
+leftmost occurrence of a C<pattern>, then given a position at which a
+match will occur, the preference for the longest match (presuming the
+use of a C<greedy> quantifier). See L<perlre> for I<much> more on
+this subject.
+
+=item lexeme
+
+Fancy term for a C<token>.
+
+=item lexer
+
+Fancy term for a C<tokener>.
+
+=item lexical analysis
+
+Fancy term for C<tokenizing>.
+
+=item lexical scoping
+
+Looking at your I<Oxford English Dictionary> through a microscope.
+(Also known as C<static scoping>, because dictionaries don't change
+very fast.) Similarly, looking at variables stored in a private
+dictionary (namespace) for each scope, which are visible only from
+their point of declaration down to the end of the lexical scope in
+which they are declared. --Syn. C<static scoping>.
+--Ant. C<dynamic scoping>.
+
+=item lexical variable
+
+A C<variable> subject to C<lexical scoping>, declared by
+L<my|perlfunc/my>. Often just called a "lexical". (The
+L<our|perlfunc/our> declaration declares a lexically scoped name for a
+global variable, which is not itself a lexical variable.)
+
+=item library
+
+Generally, a collection of procedures. In ancient days, referred to a
+collection of subroutines in a I<.pl> file. In modern times, refers
+more often to the entire collection of Perl C<module>s on your
+system.
+
+=item LIFO
+
+Last In, First Out. See also C<FIFO>. A LIFO is usually called a
+C<stack>.
+
+=item line
+
+In Unix, a sequence of zero or more non-newline characters terminated
+with a C<newline> character. On non-Unix machines, this is emulated
+by the C library even if the underlying C<operating system> has
+different ideas.
+
+=item line buffering
+
+Used by a C<standard IE<sol>O> output stream that flushes its
+C<buffer> after every C<newline>. Many standard I/O libraries
+automatically set up line buffering on output that is going to the
+terminal.
+
+=item line number
+
+The number of lines read previous to this one, plus 1. Perl keeps a
+separate line number for each source or input file it opens. The
+current source file's line number is represented by C<__LINE__>. The
+current input line number (for the file that was most recently read
+via C<E<lt>FHE<gt>>) is represented by the C<$.>
+(C<$INPUT_LINE_NUMBER>) variable. Many error messages report both
+values, if available.
+
+=item link
+
+Used as a noun, a name in a C<directory>, representing a C<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. As
+a verb, to resolve a partially compiled file's unresolved symbols into
+a (nearly) executable image. Linking can generally be static or
+dynamic, which has nothing to do with static or dynamic scoping.
+
+=item LIST
+
+A syntactic construct representing a comma-separated list of
+expressions, evaluated to produce a C<list value>. Each
+C<expression> in a C<LIST> is evaluated in C<list context> and
+interpolated into the list value.
+
+=item list
+
+An ordered set of scalar values.
+
+=item list context
+
+The situation in which an C<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 C<LIST> of arguments tell
+those arguments that they should produce a list value. See also
+C<context>.
+
+=item list operator
+
+An C<operator> that does something with a list of values, such as
+L<join|perlfunc/join> or L<grep|perlfunc/grep>. Usually used for
+named built-in operators (such as L<print|perlfunc/print>,
+L<unlink|perlfunc/unlink>, and L<system|perlfunc/system>) that do not
+require parentheses around their C<argument> list.
+
+=item list value
+
+An unnamed list of temporary scalar values that may be passed around
+within a program from any list-generating function to any function or
+construct that provides a C<list context>.
+
+=item literal
+
+A token in a programming language such as a number or C<string> that
+gives you an actual C<value> instead of merely representing possible
+values as a C<variable> does.
+
+=item little-endian
+
+From Swift: someone who eats eggs little end first. Also used of
+computers that store the least significant C<byte> of a word at a
+lower byte address than the most significant byte. Often considered
+superior to big-endian machines. See also C<big-endian>.
+
+=item local
+
+Not meaning the same thing everywhere. A global variable in Perl can
+be localized inside a L<dynamic scope|/dynamic scoping> via the
+L<local|perlfunc/local> operator.
+
+=item logical operator
+
+Symbols representing the concepts "and", "or", "xor", and "not".
+
+=item lookahead
+
+An C<assertion> that peeks at the string to the right of the current
+match location.
+
+=item lookbehind
+
+An C<assertion> that peeks at the string to the left of the current
+match location.
+
+=item loop
+
+A construct that performs something repeatedly, like a roller coaster.
+
+=item loop control statement
+
+Any statement within the body of a loop that can make a loop
+prematurely stop looping or skip an C<iteration>. Generally you
+shouldn't try this on roller coasters.
+
+=item loop label
+
+A kind of key or name attached to a loop (or roller coaster) so that
+loop control statements can talk about which loop they want to
+control.
+
+=item lvaluable
+
+Able to serve as an C<lvalue>.
+
+=item lvalue
+
+Term used by language lawyers for a storage location you can assign a
+new C<value> to, such as a C<variable> or an element of an
+C<array>. The "l" is short for "left", as in the left side of an
+assignment, a typical place for lvalues. An C<lvaluable> function or
+expression is one to which a value may be assigned, as in C<pos($x) =
+10>.
+
+=item lvalue modifier
+
+An adjectival pseudofunction that warps the meaning of an C<lvalue>
+in some declarative fashion. Currently there are three lvalue
+modifiers: L<my|perlfunc/my>, L<our|perlfunc/our>, and
+L<local|perlfunc/local>.
+
+=back
+
+=over 4
+
+=item magic
+
+Technically speaking, any extra semantics attached to a variable such
+as C<$!>, C<$0>, C<%ENV>, or C<%SIG>, or to any tied variable.
+Magical things happen when you diddle those variables.
+
+=item magical increment
+
+An C<increment> operator that knows how to bump up alphabetics as
+well as numbers.
+
+=item magical variables
+
+Special variables that have side effects when you access them or
+assign to them. For example, in Perl, changing elements of the
+C<%ENV> array also changes the corresponding environment variables
+that subprocesses will use. Reading the C<$!> variable gives you the
+current system error number or message.
+
+=item Makefile
+
+A file that controls the compilation of a program. Perl programs
+don't usually need a C<Makefile> because the Perl compiler has plenty
+of self-control.
+
+=item man
+
+The Unix program that displays online documentation (manual pages) for
+you.
+
+=item manpage
+
+A "page" from the manuals, typically accessed via the C<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 C<command>s, C<syscall>s,
+C<library> C<function>s, C<device>s,
+C<protocol>s, C<file>s, and such. In this book, we
+call any piece of standard Perl documentation (like I<perlop> or
+I<perldelta>) a manpage, no matter what format it's installed in on
+your system.
+
+=item matching
+
+See C<pattern matching>.
+
+=item member data
+
+See C<instance variable>.
+
+=item memory
+
+This always means your main memory, not your disk. Clouding the issue
+is the fact that your machine may implement C<virtual> memory; that
+is, it will pretend that it has more memory than it really does, and
+it'll use disk space to hold inactive bits. This can make it seem
+like you have a little more memory than you really do, but it's not a
+substitute for real memory. The best thing that can be said about
+virtual memory is that it lets your performance degrade gradually
+rather than suddenly when you run out of real memory. But your
+program can die when you run out of virtual memory too, if you haven't
+thrashed your disk to death first.
+
+=item metacharacter
+
+A C<character> that is I<not> supposed to be treated normally. Which
+characters are to be treated specially as metacharacters varies
+greatly from context to context. Your C<shell> will have certain
+metacharacters, double-quoted Perl C<string>s have other
+metacharacters, and C<regular expression> patterns have all the
+double-quote metacharacters plus some extra ones of their own.
+
+=item metasymbol
+
+Something we'd call a C<metacharacter> except that it's a sequence of
+more than one character. Generally, the first character in the
+sequence must be a true metacharacter to get the other characters in
+the metasymbol to misbehave along with it.
+
+=item method
+
+A kind of action that an C<object> can take if you tell it to. See
+L<perlobj>.
+
+=item 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.
+
+=item mode
+
+In the context of the I<stat>(2) syscall, refers to the field holding
+the C<permission bits> and the type of the C<file>.
+
+=item modifier
+
+See C<statement modifier>, C<regular expression modifier>, and
+C<lvalue modifier>, not necessarily in that order.
+
+=item module
+
+A C<file> that defines a C<package> of (almost) the same name, which
+can either C<export> symbols or function as an C<object> class. (A
+module's main I<.pm> file may also load in other files in support of
+the module.) See the L<use|perlfunc/use> built-in.
+
+=item modulus
+
+An integer divisor when you're interested in the remainder instead of
+the quotient.
+
+=item monger
+
+Short for Perl Monger, a purveyor of Perl.
+
+=item mortal
+
+A temporary value scheduled to die when the current statement
+finishes.
+
+=item multidimensional array
+
+An array with multiple subscripts for finding a single element. Perl
+implements these using C<reference>s--see L<perllol> and
+L<perldsc>.
+
+=item multiple inheritance
+
+The features you got from your mother and father, mixed together
+unpredictably. (See also C<inheritance>, and C<single
+inheritance>.) In computer languages (including Perl), the notion
+that a given class may have multiple direct ancestors or L<base
+classes|/base class>.
+
+=back
+
+=over 4
+
+=item named pipe
+
+A C<pipe> with a name embedded in the C<filesystem> so that it can
+be accessed by two unrelated C<process>es.
+
+=item namespace
+
+A domain of names. You needn't worry about whether the names in one
+such domain have been used in another. See C<package>.
+
+=item network address
+
+The most important attribute of a socket, like your telephone's
+telephone number. Typically an IP address. See also C<port>.
+
+=item 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
+C<\n> in Perl strings. For Windows machines writing text files, and
+for certain physical devices like terminals, the single newline gets
+automatically translated by your C library into a line feed and a
+carriage return, but normally, no translation is done.
+
+=item NFS
+
+Network File System, which allows you to mount a remote filesystem as
+if it were local.
+
+=item null character
+
+A character with the ASCII value of zero. It's used by C to terminate
+strings, but Perl allows strings to contain a null.
+
+=item null list
+
+A C<list value> with zero elements, represented in Perl by C<()>.
+
+=item null string
+
+A C<string> containing no characters, not to be confused with a
+string containing a C<null character>, which has a positive length
+and is C<true>.
+
+=item numeric context
+
+The situation in which an expression is expected by its surroundings
+(the code calling it) to return a number. See also C<context> and
+C<string context>.
+
+=item NV
+
+Short for Nevada, no part of which will ever be confused with
+civilization. NV also means an internal floating-point Numeric Value
+of the type a C<scalar> can hold, not to be confused with an C<IV>.
+
+=item nybble
+
+Half a C<byte>, equivalent to one C<hexadecimal> digit, and worth
+four C<bit>s.
+
+=back
+
+=over 4
+
+=item object
+
+An C<instance> of a C<class>. Something that "knows" what
+user-defined type (class) it is, and what it can do because of what
+class it is. Your program can request an object to do things, but the
+object gets to decide whether it wants to do them or not. Some
+objects are more accommodating than others.
+
+=item octal
+
+A number in base 8. Only the digits 0 through 7 are allowed. Octal
+constants in Perl start with 0, as in 013. See also the
+L<oct|perlfunc/oct> function.
+
+=item 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.
+
+=item one-liner
+
+An entire computer program crammed into one line of text.
+
+=item open source software
+
+Programs for which the source code is freely available and freely
+redistributable, with no commercial strings attached. For a more
+detailed definition, see L<http://www.opensource.org/osd.html>.
+
+=item operand
+
+An C<expression> that yields a C<value> that an C<operator>
+operates on. See also C<precedence>.
+
+=item operating system
+
+A special program that runs on the bare machine and hides the gory
+details of managing C<process>es and C<device>s.
+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 lawyers and other advocates). At the other
+extreme, you could say this particular version of this particular
+vendor's operating system is different from 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
+C<architecture> and C<platform>.
+
+=item operator
+
+A gizmo that transforms some number of input values to some number of
+output values, often built into a language with a special syntax or
+symbol. A given operator may have specific expectations about what
+C<type>s of data you give as its arguments
+(C<operand>s) and what type of data you want back from it.
+
+=item operator overloading
+
+A kind of C<overloading> that you can do on built-in
+C<operator>s to make them work on C<object>s as if
+the objects were ordinary scalar values, but with the actual semantics
+supplied by the object class. This is set up with the L<overload>
+C<pragma>.
+
+=item options
+
+See either C<switch> or C<regular expression modifier>.
+
+=item 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 C<context>.
+
+=item overriding
+
+Hiding or invalidating some other definition of the same name. (Not
+to be confused with C<overloading>, which adds definitions that must
+be disambiguated some other way.) To confuse the issue further, we use
+the word with two overloaded definitions: to describe how you can
+define your own C<subroutine> to hide a built-in C<function> of the
+same name (see L<perlsub/Overriding Built-in Functions>) and to
+describe how you can define a replacement C<method> in a C<derived
+class> to hide a C<base class>'s method of the same name (see
+L<perlobj>).
+
+=item owner
+
+The one user (apart from the superuser) who has absolute control over
+a C<file>. A file may also have a C<group> of users who may
+exercise joint ownership if the real owner permits it. See
+C<permission bits>.
+
+=back
+
+=over 4
+
+=item package
+
+A C<namespace> for global C<variable>s,
+C<subroutine>s, and the like, such that they can be kept
+separate from like-named C<symbol>s in other namespaces. In a
+sense, only the package is global, since the symbols in the package's
+symbol table are only accessible from code compiled outside the
+package by naming the package. But in another sense, all package
+symbols are also globals--they're just well-organized globals.
+
+=item pad
+
+Short for C<scratchpad>.
+
+=item parameter
+
+See C<argument>.
+
+=item parent class
+
+See C<base class>.
+
+=item parse tree
+
+See C<syntax tree>.
+
+=item parsing
+
+The subtle but sometimes brutal art of attempting to turn your
+possibly malformed program into a valid C<syntax tree>.
+
+=item patch
+
+To fix by applying one, as it were. In the realm of hackerdom, a
+listing of the differences between two versions of a program as might
+be applied by the C<patch>(1) program when you want to fix a bug or
+upgrade your old version.
+
+=item PATH
+
+The list of L<directories|/directory> the system searches to find a
+program you want to C<execute>. The list is stored as one of your
+C<environment variable>s, accessible in Perl as
+C<$ENV{PATH}>.
+
+=item pathname
+
+A fully qualified filename such as I</usr/bin/perl>. Sometimes
+confused with C<PATH>.
+
+=item pattern
+
+A template used in C<pattern matching>.
+
+=item pattern matching
+
+Taking a pattern, usually a C<regular expression>, and trying the
+pattern various ways on a string to see whether there's any way to
+make it fit. Often used to pick interesting tidbits out of a file.
+
+=item permission bits
+
+Bits that the C<owner> of a file sets or unsets to allow or disallow
+access to other people. These flag bits are part of the C<mode> word
+returned by the L<stat|perlfunc/stat> built-in when you ask about a
+file. On Unix systems, you can check the I<ls>(1) manpage for more
+information.
+
+=item Pern
+
+What you get when you do C<Perl++> twice. Doing it only once will
+curl your hair. You have to increment it eight times to shampoo your
+hair. Lather, rinse, iterate.
+
+=item pipe
+
+A direct C<connection> that carries the output of one C<process> to
+the input of another without an intermediate temporary file. Once the
+pipe is set up, the two processes in question can read and write as if
+they were talking to a normal file, with some caveats.
+
+=item pipeline
+
+A series of C<process>es all in a row, linked by
+C<pipe>s, where each passes its output stream to the next.
+
+=item platform
+
+The entire hardware and software context in which a program runs. A
+ program written in a platform-dependent language might break if you
+change any of: machine, operating system, libraries, compiler, or
+system configuration. The I<perl> interpreter has to be compiled
+differently for each platform because it is implemented in C, but
+programs written in the Perl language are largely
+platform-independent.
+
+=item pod
+
+The markup used to embed documentation into your Perl code. See
+L<perlpod>.
+
+=item pointer
+
+A C<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 C<key>s and C<variable> names, or L<hard
+references|/hard reference>, which aren't pointers (but act like
+pointers and do in fact contain pointers).
+
+=item polymorphism
+
+The notion that you can tell an C<object> to do something generic,
+and the object will interpret the command in different ways depending
+on its type. [E<lt>Gk many shapes]
+
+=item 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 you give when you reach the company operator.
+Also, the result of converting code to run on a different platform
+than originally intended, or the verb denoting this conversion.
+
+=item portable
+
+Once upon a time, C code compilable under both BSD and SysV. In
+general, code that can be easily converted to run on another
+C<platform>, where "easily" can be defined however you like, and
+usually is. Anything may be considered portable if you try hard
+enough. See I<mobile home> or I<London Bridge>.
+
+=item porter
+
+Someone who "carries" software from one C<platform> to another.
+Porting programs written in platform-dependent languages such as C can
+be difficult work, but porting programs like Perl is very much worth
+the agony.
+
+=item POSIX
+
+The Portable Operating System Interface specification.
+
+=item postfix
+
+An C<operator> that follows its C<operand>, as in C<$x++>.
+
+=item pp
+
+An internal shorthand for a "push-pop" code, that is, C code
+implementing Perl's stack machine.
+
+=item pragma
+
+A standard module whose practical hints and suggestions are received
+(and possibly ignored) at compile time. Pragmas are named in all
+lowercase.
+
+=item precedence
+
+The rules of conduct that, in the absence of other guidance, determine
+what should happen first. For example, in the absence of parentheses,
+you always do multiplication before addition.
+
+=item prefix
+
+An C<operator> that precedes its C<operand>, as in C<++$x>.
+
+=item preprocessing
+
+What some helper C<process> did to transform the incoming data into a
+form more suitable for the current process. Often done with an
+incoming C<pipe>. See also C<C preprocessor>.
+
+=item procedure
+
+A C<subroutine>.
+
+=item process
+
+An instance of a running program. Under multitasking systems like
+Unix, two or more separate processes could be running the same program
+independently at the same time--in fact, the L<fork|perlfunc/fork>
+function is designed to bring about this happy state of affairs.
+Under other operating systems, processes are sometimes called
+"threads", "tasks", or "jobs", often with slight nuances in meaning.
+
+=item program generator
+
+A system that algorithmically writes code for you in a high-level
+language. See also C<code generator>.
+
+=item progressive matching
+
+Merely C<pattern matching> that picks up where it left off before.
+
+=item property
+
+See either C<instance variable> or C<character property>.
+
+=item protocol
+
+In networking, an agreed-upon way of sending messages back and forth
+so that neither correspondent will get too confused.
+
+=item prototype
+
+An optional part of a C<subroutine> declaration telling the Perl
+compiler how many and what flavor of arguments may be passed as
+C<actual arguments>, so that you can write subroutine calls that
+parse much like built-in functions. (Or don't parse, as the case may
+be.)
+
+=item pseudofunction
+
+A construct that sometimes looks like a function but really isn't.
+Usually reserved for C<lvalue> modifiers like L<my|perlfunc/my>, for
+C<context> modifiers like L<scalar|perlfunc/scalar>, and for the
+pick-your-own-quotes constructs, C<q//>, C<qq//>, C<qx//>, C<qw//>,
+C<qr//>, C<m//>, C<s///>, C<y///>, and C<tr///>.
+
+=item pseudohash
+
+A reference to an array whose initial element happens to hold a
+reference to a hash. You can treat a pseudohash reference as either
+an array reference or a hash reference.
+
+=item pseudoliteral
+
+An C<operator> that looks something like a C<literal>, such as the
+output-grabbing operator, C<`>C<command>C<`>.
+
+=item public domain
+
+Something not owned by anybody. Perl is copyrighted and is thus
+I<not> in the public domain--it's just C<freely available> and
+C<freely redistributable>.
+
+=item pumpkin
+
+A notional "baton" handed around the Perl community indicating who is
+the lead integrator in some arena of development.
+
+=item pumpking
+
+A C<pumpkin> holder, the person in charge of pumping the pump, or at
+least priming it. Must be willing to play the part of the Great
+Pumpkin now and then.
+
+=item PV
+
+A "pointer value", which is Perl Internals Talk for a C<char*>.
+
+=back
+
+=over 4
+
+=item qualified
+
+Possessing a complete name. The symbol C<$Ent::moot> is qualified;
+C<$moot> is unqualified. A fully qualified filename is specified from
+the top-level directory.
+
+=item quantifier
+
+A component of a C<regular expression> specifying how many times the
+foregoing C<atom> may occur.
+
+=back
+
+=over 4
+
+=item readable
+
+With respect to files, one that has the proper permission bit set to
+let you access the file. With respect to computer programs, one
+that's written well enough that someone has a chance of figuring out
+what it's trying to do.
+
+=item reaping
+
+The last rites performed by a parent C<process> on behalf of a
+deceased child process so that it doesn't remain a C<zombie>. See
+the L<wait|perlfunc/wait> and L<waitpid|perlfunc/waitpid> function
+calls.
+
+=item record
+
+A set of related data values in a C<file> or C<stream>, often
+associated with a unique C<key> field. In Unix, often commensurate
+with a C<line>, or a blank-line-terminated set of lines (a
+"paragraph"). Each line of the I</etc/passwd> file is a record, keyed
+on login name, containing information about that user.
+
+=item recursion
+
+The art of defining something (at least partly) in terms of itself,
+which is a naughty no-no in dictionaries but often works out okay in
+computer programs if you're careful not to recurse forever, which is
+like an infinite loop with more spectacular failure modes.
+
+=item reference
+
+Where you look to find a pointer to information somewhere else. (See
+C<indirection>.) References come in two flavors, L<symbolic
+references|/symbolic reference> and L<hard references|/hard
+reference>.
+
+=item referent
+
+Whatever a reference refers to, which may or may not have a name.
+Common types of referents include scalars, arrays, hashes, and
+subroutines.
+
+=item regex
+
+See C<regular expression>.
+
+=item 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
+you can use to find what you're looking for when it varies from case
+to case. Perl's regular expressions are far from regular in the
+theoretical sense, but in regular use they work quite well. Here's a
+regular expression: C</Oh s.*t./>. This will match strings like "C<Oh
+say can you see by the dawn's early light>" and "C<Oh sit!>". See
+L<perlre>.
+
+=item regular expression modifier
+
+An option on a pattern or substitution, such as C</i> to render the
+pattern case insensitive. See also C<cloister>.
+
+=item regular file
+
+A C<file> that's not a C<directory>, a C<device>, a named C<pipe>
+or C<socket>, or a C<symbolic link>. Perl uses the C<-f> file test
+operator to identify regular files. Sometimes called a "plain" file.
+
+=item relational operator
+
+An C<operator> that says whether a particular ordering relationship
+is C<true> about a pair of C<operand>s. Perl has both
+numeric and string relational operators. See C<collating sequence>.
+
+=item reserved words
+
+A word with a specific, built-in meaning to a C<compiler>, such as
+C<if> or L<delete|perlfunc/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 C<label>s or C<filehandle>s. Also called
+"keywords".
+
+=item return value
+
+The C<value> produced by a C<subroutine> or C<expression> when
+evaluated. In Perl, a return value may be either a C<list> or a
+C<scalar>.
+
+=item RFC
+
+Request For Comment, which despite the timid connotations is the name
+of a series of important standards documents.
+
+=item right shift
+
+A C<bit shift> that divides a number by some power of 2.
+
+=item root
+
+The superuser (UID == 0). Also, the top-level directory of the
+filesystem.
+
+=item RTFM
+
+What you are told when someone thinks you should Read The Fine Manual.
+
+=item run phase
+
+Any time after Perl starts running your main program. See also
+C<compile phase>. Run phase is mostly spent in C<run time> but may
+also be spent in C<compile time> when L<require|perlfunc/require>,
+L<do|perlfunc/do> C<FILE>, or L<eval|perlfunc/eval> C<STRING>
+operators are executed or when a substitution uses the C</ee>
+modifier.
+
+=item run time
+
+The time when Perl is actually doing what your code 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, which is C<compile
+time>.
+
+=item run-time pattern
+
+A pattern that contains one or more variables to be interpolated
+before parsing the pattern as a C<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.
+
+=item RV
+
+A recreational vehicle, not to be confused with vehicular recreation.
+RV also means an internal Reference Value of the type a C<scalar> can
+hold. See also C<IV> and C<NV> if you're not confused yet.
+
+=item rvalue
+
+A C<value> that you might find on the right side of an
+C<assignment>. See also C<lvalue>.
+
+=back
+
+=over 4
+
+=item scalar
+
+A simple, singular value; a number, C<string>, or C<reference>.
+
+=item scalar context
+
+The situation in which an C<expression> is expected by its
+surroundings (the code calling it) to return a single C<value> rather
+than a C<list> of values. See also C<context> and C<list context>.
+A scalar context sometimes imposes additional constraints on the
+return value--see C<string context> and C<numeric context>.
+Sometimes we talk about a C<Boolean context> inside conditionals, but
+this imposes no additional constraints, since any scalar value,
+whether numeric or C<string>, is already true or false.
+
+=item scalar literal
+
+A number or quoted C<string>--an actual C<value> in the text of your
+program, as opposed to a C<variable>.
+
+=item scalar value
+
+A value that happens to be a C<scalar> as opposed to a C<list>.
+
+=item scalar variable
+
+A C<variable> prefixed with C<$> that holds a single value.
+
+=item scope
+
+How far away you can see a variable from, looking through one. Perl
+has two visibility mechanisms: it does C<dynamic scoping> of
+L<local|perlfunc/local> C<variable>s, meaning that the rest
+of the C<block>, and any C<subroutine>s that are called
+by the rest of the block, can see the variables that are local to the
+block. Perl does C<lexical scoping> of L<my|perlfunc/my> variables,
+meaning that the rest of the block can see the variable, but other
+subroutines called by the block I<cannot> see the variable.
+
+=item scratchpad
+
+The area in which a particular invocation of a particular file or
+subroutine keeps some of its temporary values, including any lexically
+scoped variables.
+
+=item script
+
+A text C<file> that is a program intended to be C<execute>d
+directly rather than L<compiled|/compiler> to another form of file
+before execution. Also, in the context of C<Unicode>, a writing
+system for a particular language or group of languages, such as Greek,
+Bengali, or Klingon.
+
+=item script kiddie
+
+A C<cracker> who is not a C<hacker>, but knows just enough to run
+canned scripts. A cargo-cult programmer.
+
+=item sed
+
+A venerable Stream EDitor from which Perl derives some of its ideas.
+
+=item semaphore
+
+A fancy kind of interlock that prevents multiple C<thread>s or
+C<process>es from using up the same resources simultaneously.
+
+=item separator
+
+A C<character> or C<string> that keeps two surrounding strings from
+being confused with each other. The L<split|perlfunc/split> function
+works on separators. Not to be confused with C<delimiter>s
+or C<terminator>s. The "or" in the previous sentence
+separated the two alternatives.
+
+=item serialization
+
+Putting a fancy C<data structure> into linear order so that it can be
+stored as a C<string> in a disk file or database or sent through a
+C<pipe>. Also called marshalling.
+
+=item server
+
+In networking, a C<process> that either advertises a C<service> or
+just hangs around at a known location and waits for C<client>s
+who need service to get in touch with it.
+
+=item service
+
+Something you do for someone else to make them happy, like giving them
+the time of day (or of their life). On some machines, well-known
+services are listed by the L<getservent|perlfunc/getservent> function.
+
+=item setgid
+
+Same as C<setuid>, only having to do with giving away C<group>
+privileges.
+
+=item setuid
+
+Said of a program that runs with the privileges of its C<owner>
+rather than (as is usually the case) the privileges of whoever is
+running it. Also describes the bit in the mode word (C<permission
+bits>) that controls the feature. This bit must be explicitly set by
+the owner to enable this feature, and the program must be carefully
+written not to give away more privileges than it ought to.
+
+=item shared memory
+
+A piece of C<memory> accessible by two different
+C<process>es who otherwise would not see each other's memory.
+
+=item shebang
+
+Irish for the whole McGillicuddy. In Perl culture, a portmanteau of
+"sharp" and "bang", meaning the C<#!> sequence that tells the system
+where to find the interpreter.
+
+=item shell
+
+A C<command>-line C<interpreter>. The program that interactively
+gives you a prompt, accepts one or more C<line>s of input, and
+executes the programs you mentioned, feeding each of them their proper
+C<argument>s and input data. Shells can also execute
+scripts containing such commands. Under Unix, typical shells include
+the Bourne shell (I</bin/sh>), the C shell (I</bin/csh>), and the Korn
+shell (I</bin/ksh>). Perl is not strictly a shell because it's not
+interactive (although Perl programs can be interactive).
+
+=item side effects
+
+Something extra that happens when you evaluate an C<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 L<$E<verbar>
+($AUTOFLUSH)|perlvar/$AUTOFLUSH>) has the side effect of forcing a
+flush after every L<write|perlfunc/write> or L<print|perlfunc/print>
+on the currently selected filehandle.
+
+=item signal
+
+A bolt out of the blue; that is, an event triggered by the
+C<operating system>, probably when you're least expecting it.
+
+=item signal handler
+
+A C<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 C<execute>. Under Perl, bolts out of the blue are
+called signals, and you send them with the L<kill|perlfunc/kill>
+built-in. See L<perlvar/%SIG> and L<perlipc/Signals>.
+
+=item single inheritance
+
+The features you got from your mother, if she told you that you don't
+have a father. (See also C<inheritance> and C<multiple
+inheritance>.) In computer languages, the notion that
+C<class>es reproduce asexually so that a given class can only
+have one direct ancestor or C<base class>. Perl supplies no such
+restriction, though you may certainly program Perl that way if you
+like.
+
+=item slice
+
+A selection of any number of C<element>s from a C<list>,
+C<array>, or C<hash>.
+
+=item slurp
+
+To read an entire C<file> into a C<string> in one operation.
+
+=item socket
+
+An endpoint for network communication among multiple
+C<process>es that works much like a telephone or a post
+office box. The most important thing about a socket is its C<network
+address> (like a phone number). Different kinds of sockets have
+different kinds of addresses--some look like filenames, and some
+don't.
+
+=item soft reference
+
+See C<symbolic reference>.
+
+=item source filter
+
+A special kind of C<module> that does C<preprocessing> on your
+script just before it gets to the C<tokener>.
+
+=item stack
+
+A device you can put things on the top of, and later take them back
+off in the opposite order in which you put them on. See C<LIFO>.
+
+=item standard
+
+Included in the official Perl distribution, as in a standard module, a
+standard tool, or a standard Perl C<manpage>.
+
+=item standard error
+
+The default output C<stream> for nasty remarks that don't belong in
+C<standard output>. Represented within a Perl program by the
+C<filehandle> C<STDERR>. You can use this stream explicitly, but the
+L<die|perlfunc/die> and L<warn|perlfunc/warn> built-ins write to your
+standard error stream automatically.
+
+=item standard I/O
+
+A standard C library for doing C<buffer>ed input and output to
+the C<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
+C<flush> the buffer more often, just set the C<$|> variable to a true
+value.
+
+=item standard input
+
+The default input C<stream> for your program, which if possible
+shouldn't care where its data is coming from. Represented within a
+Perl program by the C<filehandle> C<STDIN>.
+
+=item standard output
+
+The default output C<stream> for your program, which if possible
+shouldn't care where its data is going. Represented within a Perl
+program by the C<filehandle> C<STDOUT>.
+
+=item stat structure
+
+A special internal spot in which Perl keeps the information about the
+last C<file> on which you requested information.
+
+=item statement
+
+A C<command> to the computer about what to do next, like a step in a
+recipe: "Add marmalade to batter and mix until mixed." A statement is
+distinguished from a C<declaration>, which doesn't tell the computer
+to do anything, but just to learn something.
+
+=item statement modifier
+
+A C<conditional> or C<loop> that you put after the C<statement>
+instead of before, if you know what we mean.
+
+=item 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
+C<variable>, C<subroutine>, or C<method>. In Perl culture, the
+word is politely avoided.
+
+=item static method
+
+No such thing. See C<class method>.
+
+=item static scoping
+
+No such thing. See C<lexical scoping>.
+
+=item static variable
+
+No such thing. Just use a C<lexical variable> in a scope larger than
+your C<subroutine>.
+
+=item status
+
+The C<value> returned to the parent C<process> when one of its child
+processes dies. This value is placed in the special variable C<$?>.
+Its upper eight C<bit>s 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 I<wait>(2). See L<perlfunc/system>.
+
+=item STDERR
+
+See C<standard error>.
+
+=item STDIN
+
+See C<standard input>.
+
+=item STDIO
+
+See C<standard IE<sol>O>.
+
+=item STDOUT
+
+See C<standard output>.
+
+=item stream
+
+A flow of data into or out of a process as a steady sequence of bytes
+or characters, without the appearance of being broken up into packets.
+This is a kind of C<interface>--the underlying C<implementation> may
+well break your data up into separate packets for delivery, but this
+is hidden from you.
+
+=item string
+
+A sequence of characters such as "He said !@#*&%@#*?!". A string does
+not have to be entirely printable.
+
+=item string context
+
+The situation in which an expression is expected by its surroundings
+(the code calling it) to return a C<string>. See also C<context>
+and C<numeric context>.
+
+=item stringification
+
+The process of producing a C<string> representation of an abstract
+object.
+
+=item struct
+
+C keyword introducing a structure definition or name.
+
+=item structure
+
+See C<data structure>.
+
+=item subclass
+
+See C<derived class>.
+
+=item subpattern
+
+A component of a C<regular expression> pattern.
+
+=item subroutine
+
+A named or otherwise accessible 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
+C<argument>s. If the subroutine returns a meaningful
+C<value>, it is also called a C<function>.
+
+=item subscript
+
+A C<value> that indicates the position of a particular C<array>
+C<element> in an array.
+
+=item substitution
+
+Changing parts of a string via the C<s///> operator. (We avoid use of
+this term to mean C<variable interpolation>.)
+
+=item substring
+
+A portion of a C<string>, starting at a certain C<character>
+position (C<offset>) and proceeding for a certain number of
+characters.
+
+=item superclass
+
+See C<base class>.
+
+=item superuser
+
+The person whom the C<operating system> will let do almost anything.
+Typically your system administrator or someone pretending to be your
+system administrator. On Unix systems, the C<root> user. On Windows
+systems, usually the Administrator user.
+
+=item SV
+
+Short for "scalar value". But within the Perl interpreter every
+C<referent> is treated as a member of a class derived from SV, in an
+object-oriented sort of way. Every C<value> inside Perl is passed
+around as a C language C<SV*> pointer. The SV C<struct> knows its
+own "referent type", and the code is smart enough (we hope) not to try
+to call a C<hash> function on a C<subroutine>.
+
+=item switch
+
+An option you give on a command line to influence the way your program
+works, usually introduced with a minus sign. The word is also used as
+a nickname for a C<switch statement>.
+
+=item switch cluster
+
+The combination of multiple command-line switches (e.g., B<-a -b -c>)
+into one switch (e.g., B<-abc>). Any switch with an additional
+C<argument> must be the last switch in a cluster.
+
+=item switch statement
+
+A program technique that lets you evaluate an C<expression> and then,
+based on the value of the expression, do a multiway branch to the
+appropriate piece of code for that value. Also called a "case
+structure", named after the similar Pascal construct. Most switch
+statements in Perl are spelled C<for>. See L<perlsyn/Basic BLOCKs and
+Switch Statements>.
+
+=item symbol
+
+Generally, any C<token> or C<metasymbol>. Often used more
+specifically to mean the sort of name you might find in a C<symbol
+table>.
+
+=item symbol table
+
+Where a C<compiler> remembers symbols. A program like Perl must
+somehow remember all the names of all the C<variable>s,
+C<filehandle>s, and C<subroutine>s you've
+used. It does this by placing the names in a symbol table, which is
+implemented in Perl using a C<hash table>. There is a separate
+symbol table for each C<package> to give each package its own
+C<namespace>.
+
+=item symbolic debugger
+
+A program that lets you step through the L<execution|/execute> of your
+program, stopping or printing things out here and there to see whether
+anything has gone wrong, and if so, what. The "symbolic" part just
+means that you can talk to the debugger using the same symbols with
+which your program is written.
+
+=item symbolic link
+
+An alternate filename that points to the real C<filename>, which in
+turn points to the real C<file>. Whenever the C<operating system>
+is trying to parse a C<pathname> containing a symbolic link, it
+merely substitutes the new name and continues parsing.
+
+=item symbolic reference
+
+A variable whose value is the name of another variable or subroutine.
+By L<dereferencing|/dereference> the first variable, you can get at
+the second one. Symbolic references are illegal under C<use strict
+'refs'>.
+
+=item synchronous
+
+Programming in which the orderly sequence of events can be determined;
+that is, when things happen one after the other, not at the same time.
+
+=item syntactic sugar
+
+An alternative way of writing something more easily; a shortcut.
+
+=item syntax
+
+From Greek, "with-arrangement". How things (particularly symbols) are
+put together with each other.
+
+=item syntax tree
+
+An internal representation of your program wherein lower-level
+C<construct>s dangle off the higher-level constructs
+enclosing them.
+
+=item syscall
+
+A C<function> call directly to the C<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 programmers don't need to worry about the
+distinction. However, if you do happen to know which Perl functions
+are really syscalls, you can predict which of these will set the C<$!>
+(C<$ERRNO>) variable on failure. Unfortunately, beginning programmers
+often confusingly employ the term "system call" to mean what happens
+when you call the Perl L<system|perlfunc/system> function, which
+actually involves many syscalls. To avoid any confusion, we nearly
+always use say "syscall" for something you could call indirectly via
+Perl's L<syscall|perlfunc/syscall> function, and never for something
+you would call with Perl's L<system|perlfunc/system> function.
+
+=back
+
+=over 4
+
+=item tainted
+
+Said of data 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
+C<setuid> (or C<setgid>) program, or if you use the B<-T> switch.
+
+=item 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
+C<stream> of bytes. (Usually.)
+
+=item term
+
+Short for a "terminal", that is, a leaf node of a C<syntax tree>. A
+thing that functions grammatically as an C<operand> for the operators
+in an expression.
+
+=item terminator
+
+A C<character> or C<string> that marks the end of another string.
+The C<$/> variable contains the string that terminates a
+L<readline|perlfunc/readline> operation, which L<chomp|perlfunc/chomp>
+deletes from the end. Not to be confused with
+C<delimiter>s or C<separator>s. The period at
+the end of this sentence is a terminator.
+
+=item ternary
+
+An C<operator> taking three C<operand>s. Sometimes
+pronounced C<trinary>.
+
+=item text
+
+A C<string> or C<file> containing primarily printable characters.
+
+=item thread
+
+Like a forked process, but without C<fork>'s inherent memory
+protection. A thread is lighter weight than a full process, in that a
+process could have multiple threads running around in it, all fighting
+over the same process's memory space unless steps are taken to protect
+threads from each other. See L<threads>.
+
+=item tie
+
+The bond between a magical variable and its implementation class. See
+L<perlfunc/tie> and L<perltie>.
+
+=item TMTOWTDI
+
+There's More Than One Way To Do It, the Perl Motto. The notion that
+there can be more than one valid path to solving a programming problem
+in context. (This doesn't mean that more ways are always better or
+that all possible paths are equally desirable--just that there need
+not be One True Way.) Pronounced TimToady.
+
+=item token
+
+A morpheme in a programming language, the smallest unit of text with
+semantic significance.
+
+=item tokener
+
+A module that breaks a program text into a sequence of
+C<token>s for later analysis by a parser.
+
+=item tokenizing
+
+Splitting up a program text into C<token>s. Also known as
+"lexing", in which case you get "lexemes" instead of tokens.
+
+=item 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 regurgalator, you really want your own machine shop in which
+to build special tools. Perl is sort of a machine shop.
+
+=item transliterate
+
+To turn one string representation into another by mapping each
+character of the source string to its corresponding character in the
+result string. See
+L<perlop/trE<sol>SEARCHLISTE<sol>REPLACEMENTLISTE<sol>cds>.
+
+=item trigger
+
+An event that causes a C<handler> to be run.
+
+=item trinary
+
+Not a stellar system with three stars, but an C<operator> taking
+three C<operand>s. Sometimes pronounced C<ternary>.
+
+=item troff
+
+A venerable typesetting language from which Perl derives the name of
+its C<$%> variable and which is secretly used in the production of
+Camel books.
+
+=item true
+
+Any scalar value that doesn't evaluate to 0 or C<"">.
+
+=item truncating
+
+Emptying a file of existing contents, either automatically when
+opening a file for writing or explicitly via the
+L<truncate|perlfunc/truncate> function.
+
+=item type
+
+See C<data type> and C<class>.
+
+=item type casting
+
+Converting data from one type to another. C permits this. Perl does
+not need it. Nor want it.
+
+=item typed lexical
+
+A C<lexical variable> that is declared with a C<class> type: C<my
+Pony $bill>.
+
+=item typedef
+
+A type definition in the C language.
+
+=item typeglob
+
+Use of a single identifier, prefixed with C<*>. For example, C<*name>
+stands for any or all of C<$name>, C<@name>, C<%name>, C<&name>, or
+just C<name>. How you use it determines whether it is interpreted as
+all or only one of them. See L<perldata/Typeglobs and Filehandles>.
+
+=item typemap
+
+A description of how C types may be transformed to and from Perl types
+within an C<extension> module written in C<XS>.
+
+=back
+
+=over 4
+
+=item UDP
+
+User Datagram Protocol, the typical way to send C<datagram>s
+over the Internet.
+
+=item UID
+
+A user ID. Often used in the context of C<file> or C<process>
+ownership.
+
+=item umask
+
+A mask of those C<permission bits> that should be forced off when
+creating files or directories, in order to establish a policy of whom
+you'll ordinarily deny access to. See the L<umask|perlfunc/umask>
+function.
+
+=item unary operator
+
+An operator with only one C<operand>, like C<!> or
+L<chdir|perlfunc/chdir>. Unary operators are usually prefix
+operators; that is, they precede their operand. The C<++> and C<-->
+operators can be either prefix or postfix. (Their position I<does>
+change their meanings.)
+
+=item Unicode
+
+A character set comprising all the major character sets of the world,
+more or less. See L<http://www.unicode.org>.
+
+=item Unix
+
+A very large and constantly evolving language with several alternative
+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.
+
+=back
+
+=over 4
+
+=item value
+
+An actual piece of data, in contrast to all the variables, references,
+keys, indexes, operators, and whatnot that you need to access the
+value.
+
+=item variable
+
+A named storage location that can hold any of various kinds of
+C<value>, as your program sees fit.
+
+=item variable interpolation
+
+The C<interpolation> of a scalar or array variable into a string.
+
+=item variadic
+
+Said of a C<function> that happily receives an indeterminate number
+of C<actual arguments>.
+
+=item vector
+
+Mathematical jargon for a list of C<scalar value>s.
+
+=item virtual
+
+Providing the appearance of something without the reality, as in:
+virtual memory is not real memory. (See also C<memory>.) The
+opposite of "virtual" is "transparent", which means providing the
+reality of something without the appearance, as in: Perl handles the
+variable-length UTF-8 character encoding transparently.
+
+=item void context
+
+A form of C<scalar context> in which an C<expression> is not
+expected to return any C<value> at all and is evaluated for its
+C<side effects> alone.
+
+=item v-string
+
+A "version" or "vector" C<string> specified with a C<v> followed by a
+series of decimal integers in dot notation, for instance,
+C<v1.20.300.4000>. Each number turns into a C<character> with the
+specified ordinal value. (The C<v> is optional when there are at
+least three integers.)
+
+=back
+
+=over 4
+
+=item warning
+
+A message printed to the C<STDERR> stream to the effect that something
+might be wrong but isn't worth blowing up over. See L<perlfunc/warn>
+and the L<warnings> pragma.
+
+=item watch expression
+
+An expression which, when its value changes, causes a breakpoint in
+the Perl debugger.
+
+=item whitespace
+
+A C<character> that moves your cursor but doesn't otherwise put
+anything on your screen. Typically refers to any of: space, tab, line
+feed, carriage return, or form feed.
+
+=item word
+
+In normal "computerese", the piece of data of the size most
+efficiently handled by your computer, typically 32 bits or so, give or
+take a few powers of 2. In Perl culture, it more often refers to an
+alphanumeric C<identifier> (including underscores), or to a string of
+nonwhitespace C<character>s bounded by whitespace or string
+boundaries.
+
+=item working directory
+
+Your current C<directory>, from which relative pathnames are
+interpreted by the C<operating system>. The operating system knows
+your current directory because you told it with a
+L<chdir|perlfunc/chdir> or because you started out in the place where
+your parent C<process> was when you were born.
+
+=item wrapper
+
+A program or subroutine that runs some other program or subroutine for
+you, modifying some of its input or output to better suit your
+purposes.
+
+=item WYSIWYG
+
+What You See Is What You Get. Usually used when something that
+appears on the screen matches how it will eventually look, like Perl's
+L<format|perlfunc/format> declarations. Also used to mean the
+opposite of magic because everything works exactly as it appears, as
+in the three-argument form of L<open|perlfunc/open>.
+
+=back
+
+=over 4
+
+=item 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 L<perlxs>
+for the exact explanation or L<perlxstut> for an exemplary unexacting
+one.
+
+=item XSUB
+
+An external C<subroutine> defined in C<XS>.
+
+=back
+
+=over 4
+
+=item yacc
+
+Yet Another Compiler Compiler. A parser generator without which Perl
+probably would not have existed. See the file I<perly.y> in the Perl
+source distribution.
+
+=back
+
+=over 4
+
+=item zero width
+
+A subpattern C<assertion> matching the C<null string> between
+C<character>s.
+
+=item zombie
+
+A process that has died (exited) but whose parent has not yet received
+proper notification of its demise by virtue of having called
+L<wait|perlfunc/wait> or L<waitpid|perlfunc/waitpid>. If you
+L<fork|perlfunc/fork>, you must clean up after your child processes
+when they exit, or else the process table will fill up and your system
+administrator will Not Be Happy with you.
+
+=back
+
+=head1 AUTHOR AND COPYRIGHT
+
+Based on the Glossary of Programming Perl, Third Edition,
+by Larry Wall, Tom Christiansen & Jon Orwant.
+Copyright (c) 2000, 1996, 1991 O'Reilly Media, Inc.
+Used with permission.