=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, the Jargon File L, and Wikipedia L. =head1 Terms =over 4 =item accessor methods A C used to indirectly inspect or update an C's state (its Cs). =item actual arguments The Cs that you supply to a C or C when you call it. For instance, when you call C, the string C<"puff"> is the actual argument. See also C and C. =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, 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 loops, in the C<$_> variable for L or L operators, in C<$a> and C<$b> during L's comparison function, and in each element of C<@_> for the C of a subroutine call. Permanent aliases are explicitly created in Cs by Cing symbols or by assignment to Cs. Lexically scoped aliases for package variables are explicitly created by the L 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 expressions are separated with either C<||> or C. =item anonymous Used to describe a C that is not directly accessible through a named C. Such a referent must be indirectly accessible through at least one C. 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 and C. =item argument A piece of data supplied to a L, C, C, or C to tell it what it's supposed to do. Also called a "parameter". =item ARGV The name of the array containing the C C from the command line. If you use the empty CE> operator, C is the name of both the C used to traverse the arguments and the C containing the name of the current input file. =item arithmetical operator A C 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 Cs, stored such that you can easily access any of the values using an integer C that specifies the value's C in the sequence. =item array context An archaic expression for what is more correctly referred to as C. =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. =item assertion A component of a C that must be true for the pattern to match but does not necessarily match any characters itself. Often used specifically to mean a C assertion. =item assignment An C whose assigned mission in life is to change the value of a C. =item assignment operator Either a regular C, or a compound C 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. Please. =item associativity Determines whether you do the left C first or the right C first when you have "A C B C 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 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 component potentially matching a C containing one or more characters and treated as an indivisible syntactic unit by any following C. (Contrast with an C that matches something of C 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 (not) + I (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 Cs and Cs with modifiers as in C. Also, another name for an C of an C. =item autogeneration A feature of C of Cs, whereby the behavior of certain Cs 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. =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 subroutine on behalf of an undefined subroutine. =item autosplit To split a string automatically, as the B<-a> C does when running under B<-p> or B<-n> in order to emulate C. (See also the C 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 (Cs) spontaneously generate themselves as needed, including the creation of any C 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. The C type is a subclass of C. =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 by a subpattern within unadorned parentheses in a C. 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, and its earlier attempts don't pan out. See L. =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. In the absence of that stricture, a bareword is treated as if quotes were around it. =item base class A generic C type; that is, a C from which other, more specific classes are derived genetically by C. 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 of a word at a lower byte address than the least significant byte. Often considered superior to little-endian machines. See also C. =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, this distinction, already suspect, loses even more of its meaning. =item binary operator An C that takes two Cs. =item bind To assign a specific C to a C. =item bit An integer in the range from 0 to 1, inclusive. The smallest possible unit of information storage. An eighth of a C 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 Cs 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 so that it can function as an C, such as a WebCruncher object. See L. =item block What a C 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 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 Cs that is delimited by braces. The C and C statements are defined in terms of Cs, for instance. Sometimes we also say "block" to mean a lexical scope; that is, a sequence of statements that act like a C, such as within an L 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 at a time. By default, Perl does block buffering to disk files. See C and C. =item Boolean A value that is either C or C. =item Boolean context A special kind of C used in conditionals to decide whether the C returned by an expression is C or C. Does not evaluate as either a string or a number. See C. =item breakpoint A spot in your program where you've told the debugger to stop L so you can poke around and see whether anything is wrong yet. =item broadcast To send a C 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 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, the data is passed on to its destination whenever the buffer is full. With C, it's passed on whenever a complete line is received. With C, it's passed every time you do a L 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 that is predefined in the language. Even when hidden by C, you can always get at a built-in function by L its name with the C pseudo-package. =item bundle A group of related modules on C. (Also, sometimes refers to a group of command-line switches grouped into one C.) =item byte A piece of data worth eight Cs in most places. =item bytecode A pidgin-like language spoken among 'droids when they don't wish to reveal their orientation (see C). 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 definitions, inscrutable C rules, and heavy C 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(1). =item call by reference An C-passing mechanism in which the C refer directly to the C, and the C can change the actual arguments by changing the formal arguments. That is, the formal argument is an C for the actual argument. See also C. =item call by value An C-passing mechanism in which the C refer to a copy of the C, and the C cannot change the actual arguments by changing the formal arguments. See also C. =item callback A C that you register with some other part of your program in the hope that the other part of your program will C 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 in a C to store the matched C as a C. (Captured strings are also returned as a list in C.) =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 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 matchable by the C<\p> C. Many standard properties are defined for C. =item circumfix operator An C that surrounds its C, like the angle operator, or parentheses, or a hug. =item class A user-defined C, implemented in Perl via a C that provides (either directly or by inheritance) Cs (that is, Cs) to handle Cs of the class (its Cs). See also C. =item class method A C whose C is a C name, not an C reference. A method associated with the class as a whole. =item client In networking, a C that initiates contact with a C process in order to exchange data and perhaps receive a service. =item cloister A C used to restrict the scope of a C. =item closure An C subroutine that, when a reference to it is generated at run time, keeps track of the identities of externally visible Cs even after those lexical variables have supposedly gone out of C. They're called "closures" because this sort of behavior gives mathematicians a sense of closure. =item cluster A parenthesized C used to group parts of a C into a single C. =item CODE The word returned by the L function when you apply it to a reference to a subroutine. See also C. =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. =item code subpattern A C subpattern whose real purpose is to execute some Perl code, for example, the C<(?{...})> and C<(??{...})> subpatterns. =item collating sequence The order into which Cs sort. This is used by C comparison routines to decide, for example, where in this glossary to put "collating sequence". =item command In C 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, which might start with a C