diff options
Diffstat (limited to 'upstream/mageia-cauldron/man1/perlglossary.1')
-rw-r--r-- | upstream/mageia-cauldron/man1/perlglossary.1 | 3678 |
1 files changed, 3678 insertions, 0 deletions
diff --git a/upstream/mageia-cauldron/man1/perlglossary.1 b/upstream/mageia-cauldron/man1/perlglossary.1 new file mode 100644 index 00000000..7f57973f --- /dev/null +++ b/upstream/mageia-cauldron/man1/perlglossary.1 @@ -0,0 +1,3678 @@ +.\" -*- mode: troff; coding: utf-8 -*- +.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. +.ie n \{\ +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is >0, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "PERLGLOSSARY 1" +.TH PERLGLOSSARY 1 2023-11-28 "perl v5.38.2" "Perl Programmers Reference Guide" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH NAME +perlglossary \- Perl Glossary +.SH VERSION +.IX Header "VERSION" +version 5.20210520 +.SH DESCRIPTION +.IX Header "DESCRIPTION" +A glossary of terms (technical and otherwise) used in the Perl +documentation, derived from the Glossary of \fIProgramming +Perl\fR, Fourth Edition. Words or phrases in bold are defined elsewhere in +this glossary. +.PP +Other useful sources include the Unicode Glossary <http://unicode.org/glossary/>, +the Free On-Line Dictionary of Computing <http://foldoc.org/>, +the Jargon File <http://catb.org/~esr/jargon/>, +and Wikipedia <http://www.wikipedia.org/>. +.SS A +.IX Subsection "A" +.IP "accessor methods" 4 +.IX Item "accessor methods" +A \fBmethod\fR used to +indirectly inspect or update an \fBobject\fR’s state (its \fBinstance +variables\fR). +.IX Xref "accessor methods, defined methods, accessor" +.IP "actual arguments" 4 +.IX Item "actual arguments" +The \fBscalar values\fR that you supply +to a \fBfunction\fR or \fBsubroutine\fR when you call it. For instance, when you +call \f(CWpower("puff")\fR, the string \f(CW"puff"\fR is the actual argument. See also +\&\fBargument\fR and \fBformal arguments\fR. +.IX Xref "actual arguments arguments, actual" +.IP "address operator" 4 +.IX 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 +\&\fBhard reference\fR, which is much safer than a memory address. +.IX Xref "address operator" +.IP algorithm 4 +.IX Item "algorithm" +A well-defined sequence of steps, explained clearly +enough that even a computer could do them. +.IX Xref "algorithms (term)" +.IP alias 4 +.IX 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 \f(CW\*(C`foreach\*(C'\fR loops, in +the \f(CW$_\fR variable for \f(CW\*(C`map\*(C'\fR or \f(CW\*(C`grep\*(C'\fR operators, in \f(CW$a\fR and \f(CW$b\fR +during \f(CW\*(C`sort\*(C'\fR’s comparison function, and in each element of \f(CW@_\fR for the +\&\fBactual arguments\fR of a subroutine call. Permanent aliases are explicitly +created in \fBpackages\fR by \fBimporting\fR symbols or by assignment to +\&\fBtypeglobs\fR. Lexically scoped aliases for package variables are explicitly +created by the \f(CW\*(C`our\*(C'\fR declaration. +.IX Xref "aliases, defined" +.IP alphabetic 4 +.IX Item "alphabetic" +The sort of characters we put into words. In Unicode, this +is all letters including all ideographs and certain diacritics, letter +numbers like Roman numerals, and various combining marks. +.IX Xref "alphabetic sort" +.IP alternatives 4 +.IX 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: \f(CW\*(C`|\*(C'\fR. +Alternatives in normal Perl expressions are separated with a double vertical +bar: \f(CW\*(C`||\*(C'\fR. Logical alternatives in \fBBoolean\fR expressions are separated +with either \f(CW\*(C`||\*(C'\fR or \f(CW\*(C`or\*(C'\fR. +.IX Xref "alternative characters" +.IP anonymous 4 +.IX Item "anonymous" +Used to describe a \fBreferent\fR +that is not directly accessible through a named \fBvariable\fR. Such a referent +must be indirectly accessible through at least one \fBhard reference\fR. When +the last hard reference goes away, the anonymous referent is destroyed +without pity. +.IX Xref "anonymous referents referents, anonymous" +.IP application 4 +.IX Item "application" +A bigger, fancier sort of \fBprogram\fR with a fancier +name so people don’t realize they are using a program. +.IX Xref "applications (term)" +.IP architecture 4 +.IX Item "architecture" +The kind of computer 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 \fBcompiled\fR +into machine code. See also \fBplatform\fR and \fBoperating system\fR. +.IX Xref "architecture" +.IP argument 4 +.IX Item "argument" +A piece of data supplied to a \fBprogram\fR, +\&\fBsubroutine\fR, \fBfunction\fR, or \fBmethod\fR to tell it what it’s supposed to +do. Also called a “parameter”. +.IX Xref "arguments, defined" +.IP ARGV 4 +.IX Item "ARGV" +The name of the array containing the \fBargument\fR \fBvector\fR +from the command line. If you use the empty \f(CW\*(C`<>\*(C'\fR operator, \f(CW\*(C`ARGV\*(C'\fR +is the name of both the \fBfilehandle\fR used to traverse the arguments and the +\&\fBscalar\fR containing the name of the current input file. +.IX Xref "ARGV filehandle" +.IP "arithmetical operator" 4 +.IX Item "arithmetical operator" +A \fBsymbol\fR such as \f(CW\*(C`+\*(C'\fR or \f(CW\*(C`/\*(C'\fR that tells +Perl to do the arithmetic you were supposed to learn in grade school. +.IX Xref "arithmetic operators, about" +.IP array 4 +.IX Item "array" +An ordered sequence of \fBvalues\fR, stored such that you can +easily access any of the values using an \fIinteger subscript\fR that specifies +the value’s \fBoffset\fR in the sequence. +.IX Xref "arrays, defined" +.IP "array context" 4 +.IX Item "array context" +An archaic expression for what is more correctly referred to +as \fBlist context\fR. +.IX Xref "array context" +.IP "Artistic License" 4 +.IX Item "Artistic License" +The open source license that Larry Wall +created for Perl, maximizing Perl’s usefulness, availability, and +modifiability. The current version is 2. (<http://www.opensource.org/licenses/artistic\-license.php>). +.IX Xref "Artistic License Wall, Larry" +.IP ASCII 4 +.IX 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 \fBUnicode\fR. +.IX Xref "ASCII (American Standard Code for Information Interchange) American Standard Code for Information Interchange (ASCII)" +.IP assertion 4 +.IX Item "assertion" +A component of a \fBregular expression\fR that must be true for the pattern to +match but does not necessarily match any characters itself. Often used +specifically to mean a \fBzero-width\fR assertion. +.IX Xref "assertions (in regexes), defined regular expressions, assertions in" +.IP assignment 4 +.IX Item "assignment" +An \fBoperator\fR whose assigned mission in life is to +change the value of a \fBvariable\fR. +.IX Xref "assignments, defined" +.IP "assignment operator" 4 +.IX Item "assignment operator" +Either a regular \fBassignment\fR or a compound +\&\fBoperator\fR 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, \f(CW\*(C`$a += 2\*(C'\fR adds \f(CW2\fR to \f(CW$a\fR. +.IX Xref "assignment operators, about" +.IP "associative array" 4 +.IX Item "associative array" +See \fBhash\fR. Please. The term associative array is the +old Perl 4 term for a \fBhash\fR. Some languages call it a dictionary. +.IX Xref "associative arrays" +.IP associativity 4 +.IX Item "associativity" +Determines whether you do the left \fBoperator\fR first or the +right \fBoperator\fR first when you have “A \fBoperator\fR B \fBoperator\fR C”, and +the two operators are of the same precedence. Operators like \f(CW\*(C`+\*(C'\fR are left +associative, while operators like \f(CW\*(C`**\*(C'\fR are right associative. See Camel +chapter 3, “Unary and Binary Operators” for a list of operators and their +associativity. +.IX Xref "associativity" +.IP asynchronous 4 +.IX 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. +.IX Xref "asynchronous event processing" +.IP atom 4 +.IX Item "atom" +A \fBregular expression\fR component potentially matching a +\&\fBsubstring\fR containing one or more characters and treated as an indivisible +syntactic unit by any following \fBquantifier\fR. (Contrast with an +\&\fBassertion\fR that matches something of \fBzero width\fR and may not be quantified.) +.IX Xref "atoms" +.IP "atomic operation" 4 +.IX Item "atomic operation" +When Democritus gave the word “atom” to the indivisible +bits of matter, he meant literally something that could not be cut: \fIἀ\-\fR +(not) + \fI\-τομος\fR (cuttable). An atomic operation is an action that can’t be +interrupted, not one forbidden in a nuclear-free zone. +.IX Xref "atomic operation" +.IP attribute 4 +.IX Item "attribute" +A new feature that allows the declaration of +\&\fBvariables\fR and \fBsubroutines\fR with modifiers, as in \f(CW\*(C`sub foo : locked +method\*(C'\fR. Also another name for an \fBinstance variable\fR of an \fBobject\fR. +.IX Xref "attribute feature" +.IP autogeneration 4 +.IX Item "autogeneration" +A feature of \fBoperator overloading\fR of \fBobjects\fR, +whereby the behavior of certain \fBoperators\fR 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 Camel +chapter 13, “Overloading”. +.IX Xref "autogeneration, about" +.IP autoincrement 4 +.IX Item "autoincrement" +To add one to something automatically, hence the name +of the \f(CW\*(C`++\*(C'\fR operator. To instead subtract one from something automatically +is known as an “autodecrement”. +.IX Xref "autoincrement (term)" +.IP autoload 4 +.IX Item "autoload" +To load on demand. (Also called “lazy” loading.) +Specifically, to call an \f(CW\*(C`AUTOLOAD\*(C'\fR subroutine on behalf of an undefined +subroutine. +.IX Xref "autoloading, defined" +.IP autosplit 4 +.IX Item "autosplit" +To split a string automatically, as the \fI–a\fR \fBswitch\fR +does when running under \fI–p\fR or \fI–n\fR in order to emulate \fBawk\fR. (See also +the \f(CW\*(C`AutoSplit\*(C'\fR module, which has nothing to do with the +\&\f(CW\*(C`–a\*(C'\fR switch but a lot to do with autoloading.) +.IX Xref "autosplit (term) AutoSplit module" +.IP autovivification 4 +.IX Item "autovivification" +A Graeco-Roman word meaning “to bring oneself to life”. +In Perl, storage locations (\fBlvalues\fR) spontaneously generate themselves as +needed, including the creation of any \fBhard reference\fR values to point to +the next level of storage. The assignment \f(CW\*(C`$a[5][5][5][5][5] = "quintet"\*(C'\fR +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. +.IX Xref "autovivification" +.IP AV 4 +.IX Item "AV" +Short for “array +value”, which refers to one of Perl’s internal data types that holds an +\&\fBarray\fR. The \f(CW\*(C`AV\*(C'\fR type is a subclass of \fBSV\fR. +.IX Xref "AV (array value) array value (AV) values, array" +.IP awk 4 +.IX 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. +.IX Xref "awk (editing term)" +.SS B +.IX Subsection "B" +.IP backreference 4 +.IX Item "backreference" +A substring \fBcaptured\fR +by a subpattern within unadorned parentheses in a \fBregex\fR. Backslashed +decimal numbers (\f(CW\*(C`\e1\*(C'\fR, \f(CW\*(C`\e2\*(C'\fR, etc.) later in the same pattern refer back to +the corresponding subpattern in the current match. Outside the pattern, the +numbered variables (\f(CW$1\fR, \f(CW$2\fR, etc.) continue to refer to these same +values, as long as the pattern was the last successful match of the current +\&\fBdynamic scope\fR. +.IX Xref "backreferences, about references, backreferences" +.IP backtracking 4 +.IX 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 \fBregular expression\fR, and its earlier attempts don’t +pan out. See the section “The Little Engine That /Couldn(n’t)” in Camel +chapter 5, “Pattern Matching”. +.IX Xref "backtracking" +.IP "backward compatibility" 4 +.IX 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. +.IX Xref "backward compatibility, defined" +.IP bareword 4 +.IX Item "bareword" +A word sufficiently ambiguous to be deemed illegal under +\&\f(CW\*(C`use strict \*(Aqsubs\*(Aq\*(C'\fR. In the absence of that stricture, a bareword is +treated as if quotes were around it. +.IX Xref "barewords, about" +.IP "base class" 4 +.IX Item "base class" +A generic \fBobject\fR type; that is, a \fBclass\fR +from which other, more specific classes are derived genetically by +\&\fBinheritance\fR. Also called a +“superclass” by people who respect their ancestors. +.IX Xref "base classes classes, base superclasses classes, superclasses" +.IP big-endian 4 +.IX Item "big-endian" +From Swift: someone who +eats eggs big end first. Also used of computers that store the most +significant \fBbyte\fR of a word at a lower byte address than the least +significant byte. Often considered superior to little-endian machines. See +also \fBlittle-endian\fR. +.IX Xref "big–endian, defined endianness, big–endian" +.IP binary 4 +.IX 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 file of +“nontext”, presumably because such a file makes full use of all the binary +bits in its bytes. With the advent of \fBUnicode\fR, this distinction, already +suspect, loses even more of its meaning. +.IX Xref "binary (term)" +.IP "binary operator" 4 +.IX Item "binary operator" +An \fBoperator\fR that takes two \fBoperands\fR. +.IX Xref "binary operators, about" +.IP bind 4 +.IX Item "bind" +To assign a specific \fBnetwork address\fR to a \fBsocket\fR. +.IX Xref "bind (term)" +.IP bit 4 +.IX Item "bit" +An integer in the range from 0 to 1, inclusive. The smallest +possible unit of information storage. An eighth of a \fBbyte\fR 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”.) +.IX Xref "bits, defined" +.IP "bit shift" 4 +.IX 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. +.IX Xref "bit–shift operators, defined" +.IP "bit string" 4 +.IX Item "bit string" +A sequence of \fBbits\fR that is actually being thought of as a +sequence of bits, for once. +.IX Xref "bit string" +.IP bless 4 +.IX 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 +\&\fBreferent\fR so that it can function as an \fBobject\fR, such as a WebCruncher +object. See the \f(CW\*(C`bless\*(C'\fR function in Camel chapter 27, “Functions”. +.IX Xref "bless function, about bless (term)" +.IP block 4 +.IX Item "block" +What a \fBprocess\fR 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 \fBoperating system\fR likes to +deal with (normally a power of 2 such as 512 or 8192). Typically refers to +a chunk of data that’s coming from or going to a disk file. +.IX Xref "blocks, defined" +.IP BLOCK 4 +.IX Item "BLOCK" +A syntactic construct +consisting of a sequence of Perl \fBstatements\fR that is delimited by braces. +The \f(CW\*(C`if\*(C'\fR and \f(CW\*(C`while\*(C'\fR statements are defined in terms of \fR\f(CI\*(C`BLOCK\*(C'\fR\fI\fRs, for +instance. Sometimes we also say “block” to mean a lexical scope; that is, a +sequence of statements that acts like a \fI\fR\f(CI\*(C`BLOCK\*(C'\fR\fI\fR, such as within an +\&\f(CW\*(C`eval\*(C'\fR or a file, even though the statements aren’t delimited by braces. +.IX Xref "BLOCK construct, about constructs, BLOCK" +.IP "block buffering" 4 +.IX Item "block buffering" +A method of making input and output +efficient by passing one \fBblock\fR at a time. By default, Perl does block +buffering to disk files. See \fBbuffer\fR and \fBcommand buffering\fR. +.IX Xref "block buffering buffering, block" +.IP Boolean 4 +.IX Item "Boolean" +A value that is either \fBtrue\fR or +\&\fBfalse\fR. +.IX Xref "Boolean values values, Boolean" +.IP "Boolean context" 4 +.IX Item "Boolean context" +A special kind of \fBscalar +context\fR used in conditionals to decide whether the \fBscalar value\fR returned +by an expression is \fBtrue\fR or \fBfalse\fR. Does not evaluate as either a +string or a number. See \fBcontext\fR. +.IX Xref "Boolean context, about context, Boolean" +.IP breakpoint 4 +.IX Item "breakpoint" +A spot in your program where you’ve told the debugger +to stop \fBexecution\fR so you can poke around and see whether anything is +wrong yet. +.IX Xref "breakpoints, defined" +.IP broadcast 4 +.IX Item "broadcast" +To send a \fBdatagram\fR to multiple destinations +simultaneously. +.IX Xref "broadcast (networking term)" +.IP BSD 4 +.IX Item "BSD" +A psychoactive drug, popular in the ’80s, probably developed at UC +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”. +.IX Xref "BSD (Berkeley Standard Distribution) Berkeley Standard Distribution (BSD)" +.IP bucket 4 +.IX Item "bucket" +A location in a \fBhash table\fR 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.) +.IX Xref "buckets (term)" +.IP buffer 4 +.IX Item "buffer" +A temporary holding location for data. Data that are +\&\fBBlock buffering\fR means that the data is passed on to its destination +whenever the buffer is full. \fBLine buffering\fR means that it’s passed on +whenever a complete line is received. \fBCommand buffering\fR means that it’s +passed every time you do a \f(CW\*(C`print\*(C'\fR 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. +.IX Xref "buffers, defined" +.IP built-in 4 +.IX Item "built-in" +A \fBfunction\fR that is predefined in the +language. Even when hidden by \fBoverriding\fR, you can always get at a built\- +in function by \fBqualifying\fR its name with the \f(CW\*(C`CORE::\*(C'\fR pseudopackage. +.IX Xref "built–in functions, about" +.IP bundle 4 +.IX Item "bundle" +A group of related modules on \fBCPAN\fR. (Also sometimes +refers to a group of command-line switches grouped into one \fBswitch +cluster\fR.) +.IX Xref "bundles (term)" +.IP byte 4 +.IX Item "byte" +A piece of data worth eight \fBbits\fR in most places. +.IX Xref "bytes (term)" +.IP bytecode 4 +.IX Item "bytecode" +A pidgin-like lingo spoken among ’droids when they don’t wish to reveal +their orientation (see \fBendian\fR). Named after some similar languages spoken +(for similar reasons) between compilers and interpreters in the late 20ᵗʰ +century. These languages are characterized by representing everything as a +nonarchitecture-dependent sequence of bytes. +.SS C +.IX Subsection "C" +.IP C 4 +.IX Item "C" +A language beloved by many for its inside-out \fBtype\fR +definitions, inscrutable \fBprecedence\fR rules, and heavy \fBoverloading\fR 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. +.IX Xref "C language, about" +.IP cache 4 +.IX Item "cache" +A data repository. Instead of computing expensive answers +several times, compute it once and save the result. +.IX Xref "cache (term)" +.IP callback 4 +.IX Item "callback" +A \fBhandler\fR that you register with some other part of your +program in the hope that the other part of your program will \fBtrigger\fR your +handler when some event of interest transpires. +.IX Xref "callbacks" +.IP "call by reference" 4 +.IX Item "call by reference" +An \fBargument\fR\-passing mechanism in which the \fBformal arguments\fR refer directly to the +\&\fBactual arguments\fR, and the \fBsubroutine\fR can change the actual arguments +by changing the formal arguments. That is, the formal argument is an +\&\fBalias\fR for the actual argument. See also \fBcall by value\fR. +.IX Xref "call by reference references, call by reference mechanism" +.IP "call by value" 4 +.IX Item "call by value" +An \fBargument\fR\-passing mechanism in which the \fBformal +arguments\fR refer to a copy of the \fBactual arguments\fR, and the +\&\fBsubroutine\fR cannot change the actual arguments by changing the formal +arguments. See also \fBcall by reference\fR. +.IX Xref "call by value" +.IP canonical 4 +.IX Item "canonical" +Reduced to a standard form to facilitate comparison. +.IX Xref "canonical (term)" +.IP "capture variables" 4 +.IX Item "capture variables" +The variables—such as \f(CW$1\fR and +\&\f(CW$2\fR, and \f(CW\*(C`%+\*(C'\fR and \f(CW\*(C`%– \*(C'\fR—that hold the text remembered in a pattern +match. See Camel chapter 5, “Pattern Matching”. +.IX Xref "capture variables variables, capture" +.IP capturing 4 +.IX Item "capturing" +The use of parentheses around a \fBsubpattern\fR in a +\&\fBregular expression\fR to store the matched \fBsubstring\fR as a +\&\fBbackreference\fR. (Captured strings are also returned as a list in \fBlist +context\fR.) See Camel chapter 5, “Pattern Matching”. +.IX Xref "capturing in pattern matching subpatterns, capturing pattern matching, capturing in" +.IP "cargo cult" 4 +.IX Item "cargo cult" +Copying and pasting code without understanding it, while +superstitiously believing in its value. This term originated from +preindustrial cultures dealing with the detritus of explorers and colonizers +of technologically advanced cultures. See \fIThe Gods Must Be Crazy\fR. +.IX Xref "cargo cult" +.IP case 4 +.IX Item "case" +A property of certain +characters. Originally, typesetter stored capital letters in the upper of +two cases and small letters in the lower one. Unicode recognizes three +cases: \fBlowercase\fR (\fBcharacter property\fR \f(CW\*(C`\ep{lower}\*(C'\fR), \fBtitlecase\fR +(\f(CW\*(C`\ep{title}\*(C'\fR), and \fBuppercase\fR (\f(CW\*(C`\ep{upper}\*(C'\fR). A fourth casemapping called +\&\fBfoldcase\fR is not itself a distinct case, but it is used internally to +implement \fBcasefolding\fR. Not all letters have case, and some nonletters +have case. +.IX Xref "case (character) characters, case considerations" +.IP casefolding 4 +.IX Item "casefolding" +Comparing or matching a string case-insensitively. In Perl, it +is implemented with the \f(CW\*(C`/i\*(C'\fR pattern modifier, the \f(CW\*(C`fc\*(C'\fR function, and the +\&\f(CW\*(C`\eF\*(C'\fR double-quote translation escape. +.IX Xref "casefolding" +.IP casemapping 4 +.IX Item "casemapping" +The process of converting a string to one of the four Unicode +\&\fBcasemaps\fR; in Perl, it is implemented with the \f(CW\*(C`fc\*(C'\fR, \f(CW\*(C`lc\*(C'\fR, \f(CW\*(C`ucfirst\*(C'\fR, +and \f(CW\*(C`uc\*(C'\fR functions. +.IX Xref "casemapping" +.IP character 4 +.IX Item "character" +The smallest individual element of a string. Computers +store characters as integers, but Perl lets you operate on them as text. The +integer used to represent a particular character is called that character’s +\&\fBcodepoint\fR. +.IX Xref "characters, defined" +.IP "character class" 4 +.IX Item "character class" +A square-bracketed list of +characters used in a \fBregular expression\fR to indicate that any character +of the set may occur at a given point. Loosely, any predefined set of +characters so used. +.IX Xref "character classes, about classes, character" +.IP "character property" 4 +.IX Item "character property" +A predefined \fBcharacter class\fR matchable by the \f(CW\*(C`\ep\*(C'\fR +or \f(CW\*(C`\eP\*(C'\fR \fBmetasymbol\fR. \fBUnicode\fR defines hundreds of standard properties +for every possible codepoint, and Perl defines a few of its own, too. +.IX Xref "character property" +.IP "circumfix operator" 4 +.IX Item "circumfix operator" +An \fBoperator\fR that surrounds its \fBoperand\fR, like the +angle operator, or parentheses, or a hug. +.IX Xref "circumfix operator" +.IP class 4 +.IX Item "class" +A user-defined \fBtype\fR, implemented in Perl via a +\&\fBpackage\fR that provides (either directly or by inheritance) \fBmethods\fR +(that is, \fBsubroutines\fR) to handle \fBinstances\fR of the class (its +\&\fBobjects\fR). See also \fBinheritance\fR. +.IX Xref "classes, defined" +.IP "class method" 4 +.IX Item "class method" +A \fBmethod\fR whose \fBinvocant\fR is a +\&\fBpackage\fR name, not an \fBobject\fR reference. A method associated with the +class as a whole. Also see \fBinstance method\fR. +.IX Xref "class methods methods, class" +.IP client 4 +.IX Item "client" +In networking, a \fBprocess\fR that +initiates contact with a \fBserver\fR process in order to exchange data and +perhaps receive a service. +.IX Xref "clients, defined processes, client" +.IP closure 4 +.IX Item "closure" +An \fBanonymous\fR subroutine +that, when a reference to it is generated at runtime, keeps track of the +identities of externally visible \fBlexical variables\fR, even after those +lexical variables have supposedly gone out of \fBscope\fR. They’re called +“closures” because this sort of behavior gives mathematicians a sense of +closure. +.IX Xref "closure subroutines subroutines, closure" +.IP cluster 4 +.IX Item "cluster" +A parenthesized \fBsubpattern\fR +used to group parts of a \fBregular expression\fR into a single \fBatom\fR. +.IX Xref "clusters, defined subpatterns, cluster" +.IP CODE 4 +.IX Item "CODE" +The word returned by the \f(CW\*(C`ref\*(C'\fR +function when you apply it to a reference to a subroutine. See also \fBCV\fR. +.IX Xref "CODE (ref function) ref function, about" +.IP "code generator" 4 +.IX 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 \fBprogram +generator\fR. +.IX Xref "code generators, defined" +.IP codepoint 4 +.IX Item "codepoint" +The integer a computer uses to represent a given +character. ASCII codepoints are in the range 0 to 127; Unicode codepoints +are in the range 0 to 0x1F_FFFF; and Perl codepoints are in the range 0 to +2³²−1 or 0 to 2⁶⁴−1, depending on your native integer size. In Perl Culture, +sometimes called \fBordinals\fR. +.IX Xref "codepoints, about" +.IP "code subpattern" 4 +.IX Item "code subpattern" +A \fBregular expression\fR subpattern +whose real purpose is to execute some Perl code—for example, the \f(CW\*(C`(?{...})\*(C'\fR +and \f(CW\*(C`(??{...})\*(C'\fR subpatterns. +.IX Xref "code subpatterns subpatterns, code" +.IP "collating sequence" 4 +.IX Item "collating sequence" +The order into which \fBcharacters\fR +sort. This is used by \fBstring\fR comparison routines to decide, for example, +where in this glossary to put “collating sequence”. +.IX Xref "collating sequence collating sequence" +.IP co-maintainer 4 +.IX Item "co-maintainer" +A person with permissions to index a \fBnamespace\fR in +\&\fBPAUSE\fR. Anyone can upload any namespace, but only primary and +co-maintainers get their contributions indexed. +.IX Xref "co–maintainers" +.IP "combining character" 4 +.IX Item "combining character" +Any character with the +General Category of Combining Mark (\f(CW\*(C`\ep{GC=M}\*(C'\fR), which may be spacing or +nonspacing. Some are even invisible. A sequence of combining characters +following a grapheme base character together make up a single user-visible +character called a \fBgrapheme\fR. Most but not all diacritics are combining +characters, and vice versa. +.IX Xref "combining characters characters, combining" +.IP command 4 +.IX Item "command" +In \fBshell\fR 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 \fBstatement\fR, which might start with a \fBlabel\fR and typically ends with +a semicolon. +.IX Xref "commands, defined" +.IP "command buffering" 4 +.IX Item "command buffering" +A mechanism in Perl that lets you +store up the output of each Perl \fBcommand\fR and then flush it out as a +single request to the \fBoperating system\fR. It’s enabled by setting the \f(CW$|\fR +(\f(CW$AUTOFLUSH\fR) 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 \fBfile\fR or \fBpipe\fR is to use \fBblock buffering\fR. +.IX Xref "command buffering buffering, command" +.IP "command-line arguments" 4 +.IX Item "command-line arguments" +The \fBvalues\fR you supply +along with a program name when you tell a \fBshell\fR to execute a \fBcommand\fR. +These values are passed to a Perl program through \f(CW@ARGV\fR. +.IX Xref "command–line arguments arguments, command–line" +.IP "command name" 4 +.IX Item "command name" +The name of the program currently executing, as typed on the +command line. In C, the \fBcommand\fR name is passed to the program as the +first command-line argument. In Perl, it comes in separately as \f(CW$0\fR. +.IX Xref "command names" +.IP comment 4 +.IX Item "comment" +A remark that doesn’t affect the meaning of the program. +In Perl, a comment is introduced by a \f(CW\*(C`#\*(C'\fR character and continues to the +end of the line. +.IX Xref "comments, defined" +.IP "compilation unit" 4 +.IX Item "compilation unit" +The \fBfile\fR (or \fBstring\fR, in the case of \f(CW\*(C`eval\*(C'\fR) that +is currently being \fBcompiled\fR. +.IX Xref "compilation units" +.IP compile 4 +.IX Item "compile" +The process of turning source code into a machine-usable form. See \fBcompile +phase\fR. +.IP "compile phase" 4 +.IX Item "compile phase" +Any time before Perl starts running your main +program. See also \fBrun phase\fR. Compile phase is mostly spent in \fBcompile +time\fR, but may also be spent in \fBruntime\fR when \f(CW\*(C`BEGIN\*(C'\fR blocks, \f(CW\*(C`use\*(C'\fR or +\&\f(CW\*(C`no\*(C'\fR declarations, or constant subexpressions are being evaluated. The +startup and import code of any \f(CW\*(C`use\*(C'\fR declaration is also run during +compile phase. +.IX Xref "compile phase, defined" +.IP compiler 4 +.IX 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 \fIperl\fR 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 (\fBsyntax trees\fR) within the \fIperl\fR process itself, which +the \fBinterpreter\fR then interprets. There are, however, extension \fBmodules\fR +to get Perl to act more like a “real” compiler. See Camel chapter 16, +“Compiling”. +.IX Xref "compilers and compiling, about" +.IP "compile time" 4 +.IX 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 \fBruntime\fR. +.IX Xref "compile time, defined" +.IP composer 4 +.IX Item "composer" +A “constructor” for a \fBreferent\fR that isn’t really an +\&\fBobject\fR, 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 the section “Creating +References” in Camel chapter 8, “References”. +.IX Xref "composers, about" +.IP concatenation 4 +.IX Item "concatenation" +The process of gluing one +cat’s nose to another cat’s tail. Also a similar operation on two +\&\fBstrings\fR. +.IX Xref "concatenating strings strings, concatenating" +.IP conditional 4 +.IX Item "conditional" +Something “iffy”. See \fBBoolean context\fR. +.IX Xref "conditional (term)" +.IP connection 4 +.IX 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 \fBclient\fR and a \fBserver\fR. +.IX Xref "connections (term)" +.IP construct 4 +.IX Item "construct" +As a noun, a piece of syntax made up of smaller +pieces. As a transitive verb, to create an \fBobject\fR using a \fBconstructor\fR. +.IX Xref "constructs, defined" +.IP constructor 4 +.IX Item "constructor" +Any \fBclass method\fR, \fBinstance\fR, or \fBsubroutine\fR +that composes, initializes, blesses, and returns an \fBobject\fR. Sometimes we +use the term loosely to mean a \fBcomposer\fR. +.IX Xref "constructors, defined" +.IP context 4 +.IX Item "context" +The surroundings or environment. The context given by the +surrounding code determines what kind of data a particular \fBexpression\fR is +expected to return. The three primary contexts are \fBlist context\fR, +\&\fBscalar\fR, and \fBvoid context\fR. Scalar context is sometimes subdivided into +\&\fBBoolean context\fR, \fBnumeric context\fR, \fBstring context\fR, and \fBvoid +context\fR. There’s also a “don’t care” context (which is dealt with in Camel +chapter 2, “Bits and Pieces”, if you care). +.IX Xref "context, about" +.IP continuation 4 +.IX Item "continuation" +The treatment of more than one physical \fBline\fR as a +single logical line. \fBMakefile\fR lines are continued by putting a backslash +before the \fBnewline\fR. Mail headers, as defined by RFC 822, are +continued by putting a space or tab \fIafter\fR the newline. In general, lines +in Perl do not need any form of continuation mark, because \fBwhitespace\fR +(including newlines) is gleefully ignored. Usually. +.IX Xref "continuation lines RFC 822" +.IP "core dump" 4 +.IX Item "core dump" +The corpse of a \fBprocess\fR, in the form of a file left in the +\&\fBworking directory\fR of the process, usually as a result of certain kinds +of fatal errors. +.IX Xref "core dump" +.IP CPAN 4 +.IX Item "CPAN" +The Comprehensive Perl Archive Network. (See the Camel Preface +and Camel chapter 19, “CPAN” for details.) +.IX Xref "Comprehensive Perl Archive Network CPAN (Comprehensive Perl Archive Network), about" +.IP "C preprocessor" 4 +.IX Item "C preprocessor" +The typical C compiler’s first pass, which processes lines +beginning with \f(CW\*(C`#\*(C'\fR for conditional compilation and macro definition, and +does various manipulations of the program text based on the current +definitions. Also known as \fIcpp\fR(1). +.IX Xref "C preprocessor" +.IP cracker 4 +.IX Item "cracker" +Someone who breaks security on computer systems. A cracker may +be a true \fBhacker\fR or only a \fBscript kiddie\fR. +.IX Xref "crackers" +.IP "currently selected output channel" 4 +.IX Item "currently selected output channel" +The last \fBfilehandle\fR that was +designated with \f(CWselect(FILEHANDLE)\fR; \f(CW\*(C`STDOUT\*(C'\fR, if no filehandle has +been selected. +.IX Xref "currently selected output channel" +.IP "current package" 4 +.IX Item "current package" +The \fBpackage\fR in which the current statement is +\&\fBcompiled\fR. Scan backward in the text of your program through the current +\&\fBlexical scope\fR or any enclosing lexical scopes until you find a package +declaration. That’s your current package name. +.IX Xref "current package" +.IP "current working directory" 4 +.IX Item "current working directory" +See \fBworking directory\fR. +.IX Xref "current working directory" +.IP CV 4 +.IX Item "CV" +In academia, a curriculum vitæ, a fancy kind of résumé. In Perl, an internal “code value” typedef holding a +\&\fBsubroutine\fR. The \f(CW\*(C`CV\*(C'\fR type is a subclass of \fBSV\fR. +.IX Xref "CV (code value) code value (CV)" +.SS D +.IX Subsection "D" +.IP "dangling statement" 4 +.IX Item "dangling statement" +A bare, single \fBstatement\fR, +without any braces, hanging off an \f(CW\*(C`if\*(C'\fR or \f(CW\*(C`while\*(C'\fR conditional. C allows +them. Perl doesn’t. +.IX Xref "dangling statements statements, dangling" +.IP datagram 4 +.IX Item "datagram" +A packet of data, such as a \fBUDP\fR 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 \fBIP\fR level, +but \fBstream\fR protocols such as \fBTCP\fR hide this from your program.) +.IX Xref "datagrams, defined" +.IP "data structure" 4 +.IX 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 tree. +.IX Xref "data structures, defined" +.IP "data type" 4 +.IX 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, as well as +various mathematical operations that you can do on the numbers, but would +make little sense on, say, a string such as \f(CW"Kilroy"\fR. Strings have their +own operations, such as \fBconcatenation\fR. Compound types made of a number of +smaller pieces generally have operations to compose and decompose them, and +perhaps to rearrange them. \fBObjects\fR that model things in the real world +often have operations that correspond to real activities. For instance, if +you model an elevator, your elevator object might have an \f(CW\*(C`open_door\*(C'\fR +\&\fBmethod\fR. +.IX Xref "data types, defined" +.IP DBM 4 +.IX Item "DBM" +Stands for “Database Management” routines, a set of routines that emulate an +\&\fBassociative array\fR 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 \fBhash\fR across multiple invocations. You +can \f(CW\*(C`tie\*(C'\fR your hash variables to various DBM implementations. +.IX Xref "DBM (Database Management) routines Database Management (DBM) routines" +.IP declaration 4 +.IX Item "declaration" +An \fBassertion\fR 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 +\&\fBstatement\fR for its opposite. Note that some declarations also function +as statements. Subroutine declarations also act as definitions if a body +is supplied. +.IX Xref "declarations, defined" +.IP declarator 4 +.IX Item "declarator" +Something that tells your program what sort of variable +you’d like. Perl doesn’t require you to declare variables, but you can use +\&\f(CW\*(C`my\*(C'\fR, \f(CW\*(C`our\*(C'\fR, or \f(CW\*(C`state\*(C'\fR to denote that you want something other than +the default. +.IX Xref "declarators" +.IP decrement 4 +.IX Item "decrement" +To subtract a value from a +variable, as in “decrement \f(CW$x\fR” (meaning to remove 1 from its value) or +“decrement \f(CW$x\fR by 3”. +.IX Xref "decrementing values values, decrementing" +.IP default 4 +.IX Item "default" +A \fBvalue\fR chosen for you if you don’t +supply a value of your own. +.IX Xref "default values values, default" +.IP defined 4 +.IX 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 \fBvalue\fR 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 +\&\fBfalse\fR and the \f(CW\*(C`defined\*(C'\fR entry in Camel chapter 27, “Functions”. +.IX Xref "defined (term)" +.IP delimiter 4 +.IX Item "delimiter" +A \fBcharacter\fR or \fBstring\fR that sets bounds to an +arbitrarily sized textual object, not to be confused with a \fBseparator\fR or +\&\fBterminator\fR. “To delimit” really just means “to surround” or “to enclose” +(like these parentheses are doing). +.IX Xref "delimiters (term)" +.IP dereference 4 +.IX Item "dereference" +A fancy computer science term +meaning “to follow a \fBreference\fR to what it points to”. The “de” part of it +refers to the fact that you’re taking away one level of \fBindirection\fR. +.IX Xref "dereference (term) references, dereference" +.IP "derived class" 4 +.IX Item "derived class" +A \fBclass\fR that defines some of its \fBmethods\fR in terms of a more generic class, +called a \fBbase class\fR. 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. +.IX Xref "derived classes classes, derived subclasses classes, subclasses" +.IP descriptor 4 +.IX Item "descriptor" +See \fBfile descriptor\fR. +.IP destroy 4 +.IX Item "destroy" +To deallocate the memory of a \fBreferent\fR (first triggering +its \f(CW\*(C`DESTROY\*(C'\fR method, if it has one). +.IX Xref "destroy (term)" +.IP destructor 4 +.IX Item "destructor" +A special \fBmethod\fR that is called +when an \fBobject\fR is thinking about \fBdestroying\fR itself. A Perl program’s +\&\f(CW\*(C`DESTROY\*(C'\fR method doesn’t do the actual destruction; Perl just \fBtriggers\fR +the method in case the \fBclass\fR wants to do any associated cleanup. +.IX Xref "destructor method methods, destructor" +.IP device 4 +.IX 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, which the +\&\fBoperating system\fR tries to make look like a \fBfile\fR (or a bunch of files). +Under Unix, these fake files tend to live in the \fI/dev\fR directory. +.IX Xref "devices (term)" +.IP directive 4 +.IX Item "directive" +A \fBpod\fR directive. See Camel chapter 23, “Plain Old +Documentation”. +.IX Xref "directives, defined" +.IP directory 4 +.IX Item "directory" +A special file that contains other files. Some +\&\fBoperating systems\fR call these “folders”, “drawers”, “catalogues”, or +“catalogs”. +.IX Xref "directories, defined" +.IP "directory handle" 4 +.IX Item "directory handle" +A name that represents a particular instance of opening a +directory to read it, until you close it. See the \f(CW\*(C`opendir\*(C'\fR function. +.IX Xref "directory handle" +.IP discipline 4 +.IX Item "discipline" +Some people need this and some people avoid it. +For Perl, it’s an old way to say \fBI/O layer\fR. +.IX Xref "discipline (I O layer)" +.IP dispatch 4 +.IX 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 +\&\fBreferences\fR or, in the case of object \fBmethods\fR, by traversing the +inheritance tree looking for the most specific definition for the method. +.IX Xref "dispatching" +.IP distribution 4 +.IX 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. +.IX Xref "distributions, defined" +.IP dual-lived 4 +.IX Item "dual-lived" +Some modules live both in the +\&\fBStandard Library\fR and on \fBCPAN\fR. These modules might be developed on two +tracks as people modify either version. The trend currently is to untangle +these situations. +.IX Xref "dual–lived modules modules, dual–lived" +.IP dweomer 4 +.IX Item "dweomer" +An enchantment, illusion, phantasm, or jugglery. Said when Perl’s +magical \fBdwimmer\fR effects don’t do what you expect, but rather seem to be +the product of arcane \fIdweomercraft\fR, sorcery, or wonder working. [From +Middle English.] +.IX Xref "dweomer" +.IP dwimmer 4 +.IX 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 \fBdweomer\fR instead. +.IX Xref "DWIM (Do What I Mean) principle Do What I Mean (DWIM) principle dwimming" +.IP "dynamic scoping" 4 +.IX Item "dynamic scoping" +Dynamic scoping works over a \fBdynamic +scope\fR, making variables visible throughout the rest of the \fBblock\fR in +which they are first used and in any \fBsubroutines\fR that are called by the +rest of the block. Dynamically scoped variables can have their values +temporarily changed (and implicitly restored later) by a \f(CW\*(C`local\*(C'\fR operator. +(Compare \fBlexical scoping\fR.) Used more loosely to mean how a subroutine +that is in the middle of calling another subroutine “contains” that +subroutine at \fBruntime\fR. +.IX Xref "dynamic scope scopes, dynamic" +.SS E +.IX Subsection "E" +.IP eclectic 4 +.IX Item "eclectic" +Derived from many sources. Some would say \fItoo\fR many. +.IX Xref "eclectic (term)" +.IP element 4 +.IX Item "element" +A basic building block. When you’re talking about an +\&\fBarray\fR, it’s one of the items that make up the array. +.IX Xref "elements, about" +.IP embedding 4 +.IX 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!” +.IX Xref "embedding (term)" +.IP "empty subclass test" 4 +.IX Item "empty subclass test" +The notion that an empty \fBderived class\fR should +behave exactly like its \fBbase class\fR. +.IX Xref "empty subclass test" +.IP encapsulation 4 +.IX Item "encapsulation" +The veil of abstraction separating the \fBinterface\fR +from the \fBimplementation\fR (whether enforced or not), which mandates that +all access to an \fBobject\fR’s state be through \fBmethods\fR alone. +.IX Xref "encapsulation (term)" +.IP endian 4 +.IX Item "endian" +See \fBlittle-endian\fR and \fBbig-endian\fR. +.IP "en passant" 4 +.IX Item "en passant" +When you change a \fBvalue\fR as it is being copied. [From +French “in passing”, as in the exotic pawn-capturing maneuver in chess.] +.IX Xref "en passant (term)" +.IP environment 4 +.IX Item "environment" +The collective set of \fBenvironment variables\fR your +\&\fBprocess\fR inherits from its parent. Accessed via \f(CW%ENV\fR. +.IX Xref "environment (term)" +.IP "environment variable" 4 +.IX 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 \fBprocesses\fR, grandchild +processes, great-grandchild processes, and so on). Each environment +variable is a \fBkey\fR/\fBvalue\fR pair, like one entry in a \fBhash\fR. +.IX Xref "environment variables variables, environment environment variables" +.IP EOF 4 +.IX Item "EOF" +End of File. Sometimes used +metaphorically as the terminating string of a \fBhere document\fR. +.IX Xref "End of File (EOF) EOF (End of File)" +.IP errno 4 +.IX Item "errno" +The error number returned by a +\&\fBsyscall\fR when it fails. Perl refers to the error by the name \f(CW$!\fR (or +\&\f(CW$OS_ERROR\fR if you use the English module). +.IX Xref "errno (error number) error number (errno)" +.IP error 4 +.IX Item "error" +See \fBexception\fR or \fBfatal error\fR. +.IP "escape sequence" 4 +.IX Item "escape sequence" +See \fBmetasymbol\fR. +.IP exception 4 +.IX Item "exception" +A fancy term for an error. See \fBfatal error\fR. +.IP "exception handling" 4 +.IX Item "exception handling" +The way a program responds to an error. The +exception-handling mechanism in Perl is the \f(CW\*(C`eval\*(C'\fR operator. +.IX Xref "exception handling, defined" +.IP exec 4 +.IX Item "exec" +To throw away the current \fBprocess\fR’s program and replace +it with another, without exiting the process or relinquishing any resources +held (apart from the old memory image). +.IX Xref "exec function" +.IP "executable file" 4 +.IX Item "executable file" +A \fBfile\fR that is specially marked to +tell the \fBoperating system\fR that it’s okay to run this file as a program. +Usually shortened to “executable”. +.IX Xref "executable files files, executable" +.IP execute 4 +.IX Item "execute" +To run a \fBprogram\fR or \fBsubroutine\fR. (Has nothing to do +with the \f(CW\*(C`kill\*(C'\fR built-in, unless you’re trying to run a \fBsignal handler\fR.) +.IX Xref "execute (term)" +.IP "execute bit" 4 +.IX 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. +.IX Xref "execute bit" +.IP "exit status" 4 +.IX Item "exit status" +See \fBstatus\fR. +.IP exploit 4 +.IX Item "exploit" +Used as a noun in this case, this refers to a known way +to compromise a program to get it to do something the author didn’t intend. +Your task is to write unexploitable programs. +.IX Xref "exploits, security" +.IP export 4 +.IX Item "export" +To make symbols from a \fBmodule\fR available for +\&\fBimport\fR by other modules. +.IX Xref "exporting, defined" +.IP expression 4 +.IX Item "expression" +Anything you can legally say in a spot +where a \fBvalue\fR is required. Typically composed of \fBliterals\fR, +\&\fBvariables\fR, \fBoperators\fR, \fBfunctions\fR, and \fBsubroutine\fR calls, not +necessarily in that order. +.IX Xref "expressions, defined expressions" +.IP extension 4 +.IX Item "extension" +A Perl module that also pulls in \fBcompiled\fR C or C++ +code. More generally, any experimental option that can be \fBcompiled\fR into +Perl, such as multithreading. +.IX Xref "extensions, defined" +.SS F +.IX Subsection "F" +.IP false 4 +.IX Item "false" +In Perl, any value that would look like \f(CW""\fR +or \f(CW"0"\fR if evaluated in a string context. Since undefined values evaluate +to \f(CW""\fR, all undefined values are false, but not all false values are +undefined. +.IX Xref "false values values, false" +.IP FAQ 4 +.IX Item "FAQ" +Frequently Asked Question (although not necessarily +frequently answered, especially if the answer appears in the Perl FAQ +shipped standard with Perl). +.IX Xref "FAQ (Frequently Asked Question) Frequently Asked Question (FAQ)" +.IP "fatal error" 4 +.IX Item "fatal error" +An uncaught \fBexception\fR, which causes termination of the +\&\fBprocess\fR after printing a message on your \fBstandard error\fR stream. Errors +that happen inside an \f(CW\*(C`eval\*(C'\fR are not fatal. Instead, the \f(CW\*(C`eval\*(C'\fR terminates +after placing the exception message in the \f(CW$@\fR (\f(CW$EVAL_ERROR\fR) variable. +You can try to provoke a fatal error with the \f(CW\*(C`die\*(C'\fR operator (known as +throwing or raising an exception), but this may be caught by a dynamically +enclosing \f(CW\*(C`eval\*(C'\fR. If not caught, the \f(CW\*(C`die\*(C'\fR becomes a fatal error. +.IX Xref "fatal errors" +.IP "feeping creaturism" 4 +.IX Item "feeping creaturism" +A spoonerism of “creeping +featurism”, noting the biological urge to add just one more feature to +a program. +.IX Xref "feeping creaturism creeping featurism" +.IP field 4 +.IX Item "field" +A single piece of numeric or string data that is part of a +longer \fBstring\fR, \fBrecord\fR, or \fBline\fR. Variable-width fields are usually +split up by \fBseparators\fR (so use \f(CW\*(C`split\*(C'\fR to extract the fields), while +fixed-width fields are usually at fixed positions (so use \f(CW\*(C`unpack\*(C'\fR). +\&\fBInstance variables\fR are also known as “fields”. +.IX Xref "fields (term)" +.IP FIFO 4 +.IX Item "FIFO" +First In, First Out. See also \fBLIFO\fR. Also a nickname for a \fBnamed pipe\fR. +.IX Xref "First In, First Out (FIFO) FIFO (First In, First Out)" +.IP file 4 +.IX Item "file" +A named collection of data, usually stored on disk in a +\&\fBdirectory\fR in a \fBfilesystem\fR. 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. +.IX Xref "files, defined" +.IP "file descriptor" 4 +.IX Item "file descriptor" +The little number the \fBoperating +system\fR uses to keep track of which opened \fBfile\fR you’re talking about. +Perl hides the file descriptor inside a \fBstandard I/O\fR stream and then +attaches the stream to a \fBfilehandle\fR. +.IX Xref "file descriptors descriptors, file" +.IP fileglob 4 +.IX Item "fileglob" +A “wildcard” match on \fBfilenames\fR. See the \f(CW\*(C`glob\*(C'\fR function. +.IX Xref "fileglobs" +.IP filehandle 4 +.IX 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. +.IX Xref "filehandles, about" +.IP filename 4 +.IX Item "filename" +One name for a file. This name is listed in a +\&\fBdirectory\fR. You can use it in an \f(CW\*(C`open\*(C'\fR to tell the \fBoperating system\fR +exactly which file you want to open, and associate the file with a +\&\fBfilehandle\fR, which will carry the subsequent identity of that file in +your program, until you close it. +.IX Xref "filenames, about" +.IP filesystem 4 +.IX Item "filesystem" +A set of \fBdirectories\fR and \fBfiles\fR 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. +.IX Xref "filesystems, defined" +.IP "file test operator" 4 +.IX Item "file test operator" +A built-in unary operator that you use to +determine whether something is \fBtrue\fR about a file, such as \f(CW–o +$filename\fR to test whether you’re the owner of the file. +.IX Xref "file test operators, about" +.IP filter 4 +.IX Item "filter" +A program designed to take a \fBstream\fR of input and +transform it into a stream of output. +.IX Xref "filters, defined" +.IP first-come 4 +.IX Item "first-come" +The first \fBPAUSE\fR +author to upload a \fBnamespace\fR automatically becomes the \fBprimary +maintainer\fR for that namespace. The “first come” permissions distinguish a +\&\fBprimary maintainer\fR who was assigned that role from one who received it +automatically. +.IX Xref "first–come permissions permissions, first–come" +.IP flag 4 +.IX Item "flag" +We tend to avoid this term because it means so many things. +It may mean a command-line \fBswitch\fR that takes no argument itself (such as +Perl’s \f(CW\*(C`–n\*(C'\fR and \f(CW\*(C`–p\*(C'\fR flags) or, less frequently, a single-bit indicator +(such as the \f(CW\*(C`O_CREAT\*(C'\fR and \f(CW\*(C`O_EXCL\*(C'\fR flags used in \f(CW\*(C`sysopen\*(C'\fR). Sometimes +informally used to refer to certain regex modifiers. +.IX Xref "flags (term)" +.IP "floating point" 4 +.IX 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 \fBintegers\fR. Floating-point numbers are mere +approximations of real numbers. +.IX Xref "floating point methods methods, floating point" +.IP flush 4 +.IX Item "flush" +The act of emptying a \fBbuffer\fR, +often before it’s full. +.IX Xref "flushing buffers buffers, flushing" +.IP FMTEYEWTK 4 +.IX Item "FMTEYEWTK" +Far More Than Everything You Ever Wanted To Know. An +exhaustive treatise on one narrow topic, something of a super\-\fBFAQ\fR. See +Tom for far more. +.IX Xref "FMTEYEWTK acronym" +.IP foldcase 4 +.IX Item "foldcase" +The casemap used in Unicode when comparing or matching +without regard to case. Comparing lower\-, title\-, or uppercase are all +unreliable due to Unicode’s complex, one-to-many case mappings. Foldcase is +a \fBlowercase\fR variant (using a partially decomposed \fBnormalization\fR form +for certain codepoints) created specifically to resolve this. +.IX Xref "foldcase (term)" +.IP fork 4 +.IX Item "fork" +To create a child \fBprocess\fR +identical to the parent process at its moment of conception, at least until +it gets ideas of its own. A thread with protected memory. +.IX Xref "forking processes processes, forking" +.IP "formal arguments" 4 +.IX Item "formal arguments" +The generic names by which a +\&\fBsubroutine\fR knows its \fBarguments\fR. In many languages, formal arguments +are always given individual names; in Perl, the formal arguments are just +the elements of an array. The formal arguments to a Perl program are +\&\f(CW$ARGV[0]\fR, \f(CW$ARGV[1]\fR, and so on. Similarly, the formal arguments to a +Perl subroutine are \f(CW$_[0]\fR, \f(CW$_[1]\fR, and so on. You may give the +arguments individual names by assigning the values to a \f(CW\*(C`my\*(C'\fR list. See +also \fBactual arguments\fR. +.IX Xref "formal arguments arguments, formal" +.IP format 4 +.IX 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. +.IX Xref "formats, defined" +.IP "freely available" 4 +.IX 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). +.IX Xref "freely available (term)" +.IP "freely redistributable" 4 +.IX 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. +.IX Xref "freely redistributable (term)" +.IP freeware 4 +.IX Item "freeware" +Historically, any software that you give away, +particularly if you make the source code available as well. Now often +called \fBopen source software\fR. Recently there has been a trend to use the +term in contradistinction to \fBopen source software\fR, to refer only to free +software released under the Free Software +Foundation’s GPL (General Public License), but this is difficult to justify +etymologically. +.IX Xref "freeware (term) Free Software Foundation" +.IP function 4 +.IX Item "function" +Mathematically, a mapping of each of a set of input +values to a particular output value. In computers, refers to a +\&\fBsubroutine\fR or \fBoperator\fR that returns a \fBvalue\fR. It may or may not +have input values (called \fBarguments\fR). +.IX Xref "functions, about" +.IP "funny character" 4 +.IX 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. +.IX Xref "funny characters characters, funny" +.SS G +.IX Subsection "G" +.IP "garbage collection" 4 +.IX 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.) +.IX Xref "garbage collection, defined" +.IP GID 4 +.IX Item "GID" +Group ID—in Unix, the numeric group ID +that the \fBoperating system\fR uses to identify you and members of your +\&\fBgroup\fR. +.IX Xref "GID (Group ID) Group ID (GID)" +.IP glob 4 +.IX Item "glob" +Strictly, the shell’s \f(CW\*(C`*\*(C'\fR 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 \fBfileglob\fR and \fBtypeglob\fR. +.IX Xref "glob (* character)" +.IP global 4 +.IX Item "global" +Something you can see from anywhere, usually used of +\&\fBvariables\fR and \fBsubroutines\fR 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 \fBpackage\fR. +Global variables can be declared with \f(CW\*(C`our\*(C'\fR. See “Global Declarations” in +Camel chapter 4, “Statements and Declarations”. +.IX Xref "global (term)" +.IP "global destruction" 4 +.IX Item "global destruction" +The \fBgarbage collection\fR of globals (and the running +of any associated object destructors) that takes place when a Perl +\&\fBinterpreter\fR is being shut down. Global destruction should not be +confused with the Apocalypse, except perhaps when it should. +.IX Xref "global destruction" +.IP "glue language" 4 +.IX Item "glue language" +A language such as Perl that is good at hooking things +together that weren’t intended to be hooked together. +.IX Xref "glue language" +.IP granularity 4 +.IX Item "granularity" +The size of the pieces you’re dealing with, mentally +speaking. +.IX Xref "granularity" +.IP grapheme 4 +.IX Item "grapheme" +A graphene is an allotrope of carbon arranged in a +hexagonal crystal lattice one atom thick. A \fBgrapheme\fR, or more fully, a +\&\fIgrapheme cluster string\fR is a single user-visible \fBcharacter\fR, which may +in turn be several characters (\fBcodepoints\fR) long. For example, a carriage +return plus a line feed is a single grapheme but two characters, while a +“ȫ” is a single grapheme but one, two, or even three characters, depending +on \fBnormalization\fR. +.IX Xref "graphemes, defined" +.IP greedy 4 +.IX Item "greedy" +A \fBsubpattern\fR whose +\&\fBquantifier\fR wants to match as many things as possible. +.IX Xref "greedy subpatterns subpatterns, greedy" +.IP grep 4 +.IX 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 +\&\f(CW\*(C`grep\*(C'\fR function that searches a list for elements matching any given +criterion, whereas the \fBgrep\fR(1) program searches for lines matching a +\&\fBregular expression\fR in one or more files. +.IX Xref "grep function" +.IP group 4 +.IX 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. +.IX Xref "groups, defined" +.IP GV 4 +.IX Item "GV" +An internal “glob value” typedef, +holding a \fBtypeglob\fR. The \f(CW\*(C`GV\*(C'\fR type is a subclass of \fBSV\fR. +.IX Xref "GV (glob value) glob value (GV)" +.SS H +.IX Subsection "H" +.IP hacker 4 +.IX 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 \fBcrackers\fR or clueless \fBscript kiddies\fR. If you +confuse them, we will presume that you are either evil or clueless. +.IX Xref "hackers" +.IP handler 4 +.IX Item "handler" +A \fBsubroutine\fR or \fBmethod\fR that Perl calls when your +program needs to respond to some internal event, such as a \fBsignal\fR, or an +encounter with an operator subject to \fBoperator overloading\fR. See also +\&\fBcallback\fR. +.IX Xref "handlers, defined" +.IP "hard reference" 4 +.IX Item "hard reference" +A \fBscalar\fR \fBvalue\fR containing +the actual address of a \fBreferent\fR, such that the referent’s \fBreference\fR +count accounts for it. (Some hard references are held internally, such as +the implicit reference from one of a \fBtypeglob\fR’s variable slots to its +corresponding referent.) A hard reference is different from a \fBsymbolic +reference\fR. +.IX Xref "hard references, about references, hard" +.IP hash 4 +.IX Item "hash" +An unordered association of \fBkey\fR/\fBvalue\fR pairs, stored such that you can easily use a string \fBkey\fR to +look up its associated data \fBvalue\fR. 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. +.IX Xref "hashes, about key value pairs, about" +.IP "hash table" 4 +.IX Item "hash table" +A data structure used internally by Perl for implementing +associative arrays (hashes) efficiently. See also \fBbucket\fR. +.IX Xref "hash tables" +.IP "header file" 4 +.IX 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 \fI.h\fR extension. Perl +doesn’t really have header files, though historically Perl has sometimes +used translated \fI.h\fR files with a \fI.ph\fR extension. See \f(CW\*(C`require\*(C'\fR in +Camel chapter 27, “Functions”. (Header files have been superseded by the +\&\fBmodule\fR mechanism.) +.IX Xref "header files files, header" +.IP "here document" 4 +.IX Item "here document" +So called because of a similar construct in \fBshells\fR that +pretends that the \fBlines\fR following the \fBcommand\fR are a separate \fBfile\fR +to be fed to the command, up to some terminating string. In Perl, however, +it’s just a fancy form of quoting. +.IX Xref "here documents" +.IP hexadecimal 4 +.IX Item "hexadecimal" +A number in base 16, “hex” for short. The digits for 10 +through 15 are customarily represented by the letters \f(CW\*(C`a\*(C'\fR through \f(CW\*(C`f\*(C'\fR. +Hexadecimal constants in Perl start with \f(CW\*(C`0x\*(C'\fR. See also the \f(CW\*(C`hex\*(C'\fR +function in Camel chapter 27, “Functions”. +.IX Xref "hexadecimals" +.IP "home directory" 4 +.IX Item "home directory" +The directory you are put into when +you log in. On a Unix system, the name is often placed into \f(CW$ENV{HOME}\fR +or \f(CW$ENV{LOGDIR}\fR by \fIlogin\fR, but you can also find it with +\&\f(CW\*(C`(get\*(C'\fR\f(CW\*(C`pwuid($<))[7]\*(C'\fR. (Some platforms do not have a concept of a +home directory.) +.IX Xref "home directory directories, home" +.IP host 4 +.IX Item "host" +The computer on which a program or other data resides. +.IX Xref "host computers" +.IP hubris 4 +.IX Item "hubris" +Excessive pride, the sort of thing for which Zeus zaps +you. 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 \fBlaziness\fR and \fBimpatience\fR. +.IX Xref "hubris quality" +.IP HV 4 +.IX Item "HV" +Short for a “hash value” typedef, which +holds Perl’s internal representation of a hash. The \f(CW\*(C`HV\*(C'\fR type is a +subclass of \fBSV\fR. +.IX Xref "HV (hash value) hash value (HV)" +.SS I +.IX Subsection "I" +.IP identifier 4 +.IX Item "identifier" +A legally formed name for most anything in which a +computer program might be interested. Many languages (including Perl) allow +identifiers to start with an alphabetic character, and then contain +alphabetics and digits. Perl also allows connector punctuation like the +underscore character wherever it allows alphabetics. (Perl also has more +complicated names, like \fBqualified\fR names.) +.IX Xref "identifiers, defined" +.IP impatience 4 +.IX 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 \fBlaziness\fR and \fBhubris\fR. +.IX Xref "impatience quality" +.IP implementation 4 +.IX 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 \fBinterface\fR. +.IX Xref "implementation (term)" +.IP import 4 +.IX Item "import" +To gain access to symbols that are exported from another +module. See \f(CW\*(C`use\*(C'\fR in Camel chapter 27, “Functions”. +.IX Xref "import (term)" +.IP increment 4 +.IX Item "increment" +To increase the value of +something by 1 (or by some other number, if so specified). +.IX Xref "incrementing values values, incrementing" +.IP indexing 4 +.IX Item "indexing" +In olden days, the act of looking up a \fBkey\fR in an +actual index (such as a phone book). But now it's merely the act of using +any kind of key or position to find the corresponding \fBvalue\fR, even if no +index is involved. Things have degenerated to the point that Perl’s +\&\f(CW\*(C`index\*(C'\fR function merely locates the position (index) of one string in +another. +.IX Xref "indexing (term)" +.IP "indirect filehandle" 4 +.IX Item "indirect filehandle" +An \fBexpression\fR that +evaluates to something that can be used as a \fBfilehandle\fR: a \fBstring\fR +(filehandle name), a \fBtypeglob\fR, a typeglob \fBreference\fR, or a low-level +\&\fBIO\fR object. +.IX Xref "indirect filehandles filehandles, indirect" +.IP indirection 4 +.IX 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 \fBsymbolic references\fR or \fBhard\fR. +.IX Xref "indirection (term)" +.IP "indirect object" 4 +.IX 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, \f(CW\*(C`print STDOUT "$foo\en";\*(C'\fR can be +understood as “verb indirect-object object”, where \f(CW\*(C`STDOUT\*(C'\fR is the +recipient of the \f(CW\*(C`print\*(C'\fR action, and \f(CW"$foo"\fR is the object being +printed. Similarly, when invoking a \fBmethod\fR, you might place the +invocant in the dative slot between the method and its arguments: +.IX Xref "indirect objects, defined objects, indirect" +.Sp +.Vb 3 +\& $gollum = new Pathetic::Creature "Sméagol"; +\& give $gollum "Fisssssh!"; +\& give $gollum "Precious!"; +.Ve +.IP "indirect object slot" 4 +.IX 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.) \f(CW\*(C`STDERR\*(C'\fR is in the indirect object slot here: +.IX Xref "indirect object slot" +.Sp +.Vb 1 +\& print STDERR "Awake! Awake! Fear, Fire, Foes! Awake!\en"; +.Ve +.IP infix 4 +.IX Item "infix" +An \fBoperator\fR that comes in between its \fBoperands\fR, +such as multiplication in \f(CW\*(C`24 * 7\*(C'\fR. +.IX Xref "infix operators" +.IP inheritance 4 +.IX Item "inheritance" +What you get from your ancestors, genetically or +otherwise. If you happen to be a \fBclass\fR, your ancestors are called \fBbase +classes\fR and your descendants are called \fBderived classes\fR. See \fBsingle +inheritance\fR and \fBmultiple inheritance\fR. +.IX Xref "inheritance, defined" +.IP instance 4 +.IX Item "instance" +Short for “an instance of a class”, meaning an \fBobject\fR +of that \fBclass\fR. +.IX Xref "instances (term)" +.IP "instance data" 4 +.IX Item "instance data" +See \fBinstance variable\fR. +.IX Xref "instance data" +.IP "instance method" 4 +.IX Item "instance method" +A \fBmethod\fR of an \fBobject\fR, as +opposed to a \fBclass method\fR. +.IX Xref "instance methods methods, instance" +.Sp +A \fBmethod\fR whose \fBinvocant\fR is an \fBobject\fR, not a \fBpackage\fR name. Every +object of a class shares all the methods of that class, so an instance +method applies to all instances of the class, rather than applying to a +particular instance. Also see \fBclass method\fR. +.IP "instance variable" 4 +.IX Item "instance variable" +An \fBattribute\fR of an \fBobject\fR; data stored with the particular object rather than with the class +as a whole. +.IX Xref "instance variables, defined variables, instance" +.IP integer 4 +.IX 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. +.IX Xref "integers (term)" +.IP interface 4 +.IX Item "interface" +The services a piece of code promises to provide +forever, in contrast to its \fBimplementation\fR, which it should feel free to +change whenever it likes. +.IX Xref "interfaces (term)" +.IP interpolation 4 +.IX 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 +\&\fR\f(CI\*(C`LIST\*(C'\fR\fI\fR. +.IX Xref "interpolation, defined" +.IP interpreter 4 +.IX 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 \fBcompilers\fR 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 +(\fBsyntax trees\fR) within the \fIperl\fR process itself, which the Perl +\&\fBruntime\fR system then interprets. +.IX Xref "interpreters, defined" +.IP invocant 4 +.IX Item "invocant" +The agent on whose behalf a \fBmethod\fR is invoked. In a +\&\fBclass\fR method, the invocant is a package name. In an \fBinstance\fR method, +the invocant is an object reference. +.IX Xref "invocants, defined" +.IP invocation 4 +.IX Item "invocation" +The act of calling up a deity, daemon, program, +method, subroutine, or function to get it to do what you think it’s +supposed to do. We usually “call” subroutines but “invoke” methods, since +it sounds cooler. +.IX Xref "invocation, method" +.IP I/O 4 +.IX Item "I/O" +Input from, or output to, a \fBfile\fR or \fBdevice\fR. +.IX Xref "I O (Input Output), defined Input Output (I O), defined" +.IP IO 4 +.IX Item "IO" +An internal I/O object. Can also mean \fBindirect object\fR. +.IP "I/O layer" 4 +.IX Item "I/O layer" +One of the filters between the data and what you get as input +or what you end up with as output. +.IX Xref "I O layer" +.IP IPA 4 +.IX Item "IPA" +India Pale Ale. Also the International Phonetic Alphabet, the +standard alphabet used for phonetic notation worldwide. Draws heavily on +Unicode, including many combining characters. +.IX Xref "International Phonetic Alphabet (IPA) IPA (International Phonetic Alphabet)" +.IP IP 4 +.IX Item "IP" +Internet Protocol, or +Intellectual +Property. +.IX Xref "Internet Protocol (IP) IP (Internet Protocol) IP (Intellectual Property) Intellectual Property (IP)" +.IP IPC 4 +.IX Item "IPC" +Interprocess Communication. +.IX Xref "Interprocess Communication IPC (Interprocess Communication), about communication" +.IP is-a 4 +.IX Item "is-a" +A relationship between two \fBobjects\fR 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 \fBbase +class\fR and a specific \fBderived class\fR. Oddly enough, Platonic classes +don’t always have Platonic relationships—see \fBinheritance\fR. +.IX Xref "is–a relationship" +.IP iteration 4 +.IX Item "iteration" +Doing something repeatedly. +.IX Xref "iteration" +.IP iterator 4 +.IX Item "iterator" +A special programming gizmo that keeps track of where you are +in something that you’re trying to iterate over. The \f(CW\*(C`foreach\*(C'\fR loop in +Perl contains an iterator; so does a hash, allowing you to \f(CW\*(C`each\*(C'\fR through +it. +.IX Xref "iterators" +.IP IV 4 +.IX 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 \fBscalar\fR can hold, not to be confused with an \fBNV\fR. +.IX Xref "IV (Integer Value) Integer Value (IV)" +.SS J +.IX Subsection "J" +.IP JAPH 4 +.IX 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 ongoing +Obfuscated Perl Contest seen in USENET signatures. +.IX Xref "JAPH acronym" +.SS K +.IX Subsection "K" +.IP key 4 +.IX Item "key" +The string index to a \fBhash\fR, used to look up the \fBvalue\fR +associated with that key. +.IX Xref "keys, defined" +.IP keyword 4 +.IX Item "keyword" +See \fBreserved words\fR. +.SS L +.IX Subsection "L" +.IP label 4 +.IX Item "label" +A name you give to a \fBstatement\fR so that you can talk +about that statement elsewhere in the program. +.IX Xref "labels, defined" +.IP laziness 4 +.IX 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 then 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 \fBimpatience\fR and +\&\fBhubris\fR. +.IX Xref "laziness quality" +.IP "leftmost longest" 4 +.IX Item "leftmost longest" +The preference of the \fBregular expression\fR engine to match the +leftmost occurrence of a \fBpattern\fR, then given a position at which a match +will occur, the preference for the longest match (presuming the use of a +\&\fBgreedy\fR quantifier). See Camel chapter 5, “Pattern Matching” for \fImuch\fR +more on this subject. +.IX Xref "leftmost longest preference regular expressions, leftmost longest preference" +.IP "left shift" 4 +.IX Item "left shift" +A \fBbit shift\fR that multiplies the +number by some power of 2. +.IX Xref "left shift (<<) bit operator bit–shift operators, left shift << (left shift) bit operator" +.IP lexeme 4 +.IX Item "lexeme" +Fancy term for a \fBtoken\fR. +.IX Xref "lexeme (token)" +.IP lexer 4 +.IX Item "lexer" +Fancy term for a \fBtokener\fR. +.IX Xref "lexer (tokener)" +.IP "lexical analysis" 4 +.IX Item "lexical analysis" +Fancy term for \fBtokenizing\fR. +.IX Xref "lexical analysis" +.IP "lexical scoping" 4 +.IX Item "lexical scoping" +Looking at your \fIOxford English +Dictionary\fR through a microscope. (Also known as \fBstatic scoping\fR, 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. +\&\fBstatic scoping\fR. —Ant. \fBdynamic scoping\fR. +.IX Xref "lexical scopes, defined scopes static scopes scopes, static" +.IP "lexical variable" 4 +.IX Item "lexical variable" +A \fBvariable\fR subject to +\&\fBlexical scoping\fR, declared by \f(CW\*(C`my\*(C'\fR. Often just called a “lexical”. (The +\&\f(CW\*(C`our\*(C'\fR declaration declares a lexically scoped name for a global variable, +which is not itself a lexical variable.) +.IX Xref "lexical variables, about variables, lexical" +.IP library 4 +.IX Item "library" +Generally, a collection of procedures. In ancient +days, referred to a collection of subroutines in a \fI.pl\fR file. In modern +times, refers more often to the entire collection of Perl \fBmodules\fR on +your system. +.IX Xref "libraries, defined" +.IP LIFO 4 +.IX Item "LIFO" +Last In, First Out. See also \fBFIFO\fR. A LIFO is usually called a +\&\fBstack\fR. +.IX Xref "Last In, First Out (LIFO) LIFO (Last In, First Out) stacks, defined" +.IP line 4 +.IX Item "line" +In Unix, a sequence of zero or more nonnewline characters +terminated with a \fBnewline\fR character. On non-Unix machines, this is +emulated by the C library even if the underlying \fBoperating system\fR has +different ideas. +.IX Xref "line (term)" +.IP linebreak 4 +.IX Item "linebreak" +A \fBgrapheme\fR consisting of either a carriage return followed +by a line feed or any character with the Unicode Vertical Space \fBcharacter +property\fR. +.IX Xref "linebreaks" +.IP "line buffering" 4 +.IX Item "line buffering" +Used by a \fBstandard I/O\fR output stream that +flushes its \fBbuffer\fR after every \fBnewline\fR. Many standard I/O libraries +automatically set up line buffering on output that is going to the terminal. +.IX Xref "line buffering buffering, line" +.IP "line number" 4 +.IX 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 \f(CW\*(C`_\|_LINE_\|_\*(C'\fR. The +current input line number (for the file that was most recently read via +\&\f(CW\*(C`<FH>\*(C'\fR) is represented by the \f(CW$.\fR (\f(CW$INPUT_LINE_NUMBER\fR) +variable. Many error messages report both values, if available. +.IX Xref "line number" +.IP link 4 +.IX Item "link" +Used as a noun, a name in a \fBdirectory\fR that represents a +\&\fBfile\fR. 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 \fBcompiled\fR 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. +.IX Xref "links, defined" +.IP LIST 4 +.IX Item "LIST" +A syntactic construct representing a +comma\- separated list of expressions, evaluated to produce a \fBlist value\fR. +Each \fBexpression\fR in a \fR\f(CI\*(C`LIST\*(C'\fR\fI\fR is evaluated in \fBlist context\fR and +interpolated into the list value. +.IX Xref "LIST construct constructs, LIST" +.IP list 4 +.IX Item "list" +An ordered set of scalar values. +.IX Xref "lists, defined" +.IP "list context" 4 +.IX Item "list context" +The situation in which an \fBexpression\fR is +expected by its surroundings (the code calling it) to return a list of +values rather than a single value. Functions that want a \fR\f(CI\*(C`LIST\*(C'\fR\fI\fR of +arguments tell those arguments that they should produce a list value. See +also \fBcontext\fR. +.IX Xref "list context context, list" +.IP "list operator" 4 +.IX Item "list operator" +An \fBoperator\fR that does something with a list of +values, such as \f(CW\*(C`join\*(C'\fR or \f(CW\*(C`grep\*(C'\fR. Usually used for named built-in +operators (such as \f(CW\*(C`print\*(C'\fR, \f(CW\*(C`unlink\*(C'\fR, and \f(CW\*(C`system\*(C'\fR) that do not require +parentheses around their \fBargument\fR list. +.IX Xref "list operators, about" +.IP "list value" 4 +.IX 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 \fBlist context\fR. +.IX Xref "list values, about values, list" +.IP literal 4 +.IX Item "literal" +A token in a programming language, such as a number or +\&\fBstring\fR, that gives you an actual \fBvalue\fR instead of merely representing +possible values as a \fBvariable\fR does. +.IX Xref "literals, defined" +.IP little-endian 4 +.IX Item "little-endian" +From Swift: someone +who eats eggs little end first. Also used of computers that store the least +significant \fBbyte\fR of a word at a lower byte address than the most +significant byte. Often considered superior to big-endian machines. See +also \fBbig-endian\fR. +.IX Xref "little–endian, defined endianness, little–endian" +.IP local 4 +.IX Item "local" +Not meaning the same thing everywhere. A global +variable in Perl can be localized inside a \fBdynamic scope\fR via the +\&\f(CW\*(C`local\*(C'\fR operator. +.IX Xref "local operator, about" +.IP "logical operator" 4 +.IX Item "logical operator" +Symbols representing the concepts “and”, “or”, +“xor”, and “not”. +.IX Xref "logical operators, about" +.IP lookahead 4 +.IX Item "lookahead" +An \fBassertion\fR that peeks at the string to the right of the current match location. +.IX Xref "lookahead assertions assertions (in regexes), lookahead" +.IP lookbehind 4 +.IX Item "lookbehind" +An \fBassertion\fR that peeks at the string to the left of the current match +location. +.IX Xref "lookbehind assertions assertions (in regexes), lookbehind" +.IP loop 4 +.IX Item "loop" +A construct that +performs something repeatedly, like a roller coaster. +.IX Xref "loop constructs and statements, about constructs, loop" +.IP "loop control statement" 4 +.IX Item "loop control statement" +Any statement within the body of a loop that can +make a loop prematurely stop looping or skip an \fBiteration\fR. Generally, +you shouldn’t try this on roller coasters. +.IX Xref "statements, loop control" +.IP "loop label" 4 +.IX 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. +.IX Xref "loop labels labels, loop" +.IP lowercase 4 +.IX Item "lowercase" +In Unicode, not just +characters with the General Category of Lowercase Letter, but any character +with the Lowercase property, including Modifier Letters, Letter Numbers, +some Other Symbols, and one Combining Mark. +.IX Xref "lowercase characters characters, lowercase" +.IP lvaluable 4 +.IX Item "lvaluable" +Able to serve as an \fBlvalue\fR. +.IX Xref "lvaluable function functions, lvaluable" +.IP lvalue 4 +.IX Item "lvalue" +Term used by language lawyers for a +storage location you can assign a new \fBvalue\fR to, such as a \fBvariable\fR or +an element of an \fBarray\fR. The “l” is short for “left”, as in the left side +of an assignment, a typical place for lvalues. An \fBlvaluable\fR function or +expression is one to which a value may be assigned, as in \f(CW\*(C`pos($x) = 10\*(C'\fR. +.IX Xref "lvalue (term) values, lvalue" +.IP "lvalue modifier" 4 +.IX Item "lvalue modifier" +An adjectival pseudofunction that +warps the meaning of an \fBlvalue\fR in some declarative fashion. Currently +there are three lvalue modifiers: \f(CW\*(C`my\*(C'\fR, \f(CW\*(C`our\*(C'\fR, and \f(CW\*(C`local\*(C'\fR. +.IX Xref "lvalue modifier modifiers, lvalue" +.SS M +.IX Subsection "M" +.IP magic 4 +.IX Item "magic" +Technically speaking, any extra semantics attached to a +variable such as \f(CW$!\fR, \f(CW$0\fR, \f(CW%ENV\fR, or \f(CW%SIG\fR, or to any tied +variable. Magical things happen when you diddle those variables. +.IX Xref "magic (term)" +.IP "magical increment" 4 +.IX Item "magical increment" +An \fBincrement\fR operator that knows how to +bump up ASCII alphabetics as well as numbers. +.IX Xref "magical increment operator" +.IP "magical variables" 4 +.IX 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 \f(CW%ENV\fR array also changes the corresponding +environment variables that subprocesses will use. Reading the \f(CW$!\fR +variable gives you the current system error number or message. +.IX Xref "magical variables variables, magical" +.IP Makefile 4 +.IX Item "Makefile" +A file that controls the compilation of a program. Perl programs +don’t usually need a \fBMakefile\fR because the Perl compiler has plenty of +self-control. +.IX Xref "Makefile" +.IP man 4 +.IX Item "man" +The Unix program that displays online documentation +(manual pages) for you. +.IX Xref "man program (Unix)" +.IP manpage 4 +.IX Item "manpage" +A “page” from the manuals, typically accessed via the +\&\fIman\fR(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 \fBcommands\fR, \fBsyscalls\fR, \fBlibrary\fR \fBfunctions\fR, \fBdevices\fR, +\&\fBprotocols\fR, \fBfiles\fR, and such. In this book, we call any piece of +standard Perl documentation (like perlop or perldelta) a manpage, no +matter what format it’s installed in on your system. +.IX Xref "manpages, defined" +.IP matching 4 +.IX Item "matching" +See \fBpattern matching\fR. +.IX Xref "matching" +.IP "member data" 4 +.IX Item "member data" +See \fBinstance variable\fR. +.IX Xref "member data" +.IP memory 4 +.IX Item "memory" +This always means your main memory, not your disk. +Clouding the issue is the fact that your machine may implement +\&\fBvirtual\fR 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. +.IX Xref "memory, defined" +.IP metacharacter 4 +.IX Item "metacharacter" +A \fBcharacter\fR that is \fInot\fR supposed to be treated normally. Which characters +are to be treated specially as metacharacters varies greatly from context to +context. Your \fBshell\fR will have certain metacharacters, double-quoted Perl +\&\fBstrings\fR have other metacharacters, +and \fBregular expression\fR patterns have all the double-quote metacharacters plus +some extra ones of their own. +.IX Xref "metacharacters, about characters, regex metacharacters regular expressions, metacharacters and" +.IP metasymbol 4 +.IX Item "metasymbol" +Something we’d call a +\&\fBmetacharacter\fR 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. +.IX Xref "metasymbols, about escape sequences" +.IP method 4 +.IX Item "method" +A kind of action that an \fBobject\fR can take if you tell +it to. See Camel chapter 12, “Objects”. +.IX Xref "methods, defined" +.IP "method resolution order" 4 +.IX Item "method resolution order" +The path Perl takes through \f(CW@INC\fR. By default, this is a double depth first +search, once looking for defined methods and once for \f(CW\*(C`AUTOLOAD\*(C'\fR. However, +Perl lets you configure this with \f(CW\*(C`mro\*(C'\fR. +.IX Xref "method resolution order (mro) mro (method resolution order)" +.IP minicpan 4 +.IX Item "minicpan" +A CPAN mirror that includes just the latest versions for each +distribution, probably created with \f(CW\*(C`CPAN::Mini\*(C'\fR. See +Camel chapter 19, “CPAN”. +.IX Xref "minicpan, defined CPAN (Comprehensive Perl Archive Network), minicpan and CPAN::Mini module" +.IP minimalism 4 +.IX 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. +.IX Xref "minimalism" +.IP mode 4 +.IX Item "mode" +In the context of the \fIstat\fR(2) syscall, refers to the field +holding the \fBpermission bits\fR and the type of the \fBfile\fR. +.IX Xref "mode" +.IP modifier 4 +.IX Item "modifier" +See \fBstatement modifier\fR, \fBregular expression\fR, and +\&\fBlvalue\fR, not necessarily in that order. +.IX Xref "modifiers, defined" +.IP module 4 +.IX Item "module" +A \fBfile\fR that defines a \fBpackage\fR of (almost) the same +name, which can either \fBexport\fR symbols or function as an \fBobject\fR class. +(A module’s main \fI.pm\fR file may also load in other files in support of the +module.) See the \f(CW\*(C`use\*(C'\fR built-in. +.IX Xref "modules, defined" +.IP modulus 4 +.IX Item "modulus" +An integer divisor when +you’re interested in the remainder instead of the quotient. +.IX Xref "modulus (%) operator % (modulus) operator" +.IP mojibake 4 +.IX Item "mojibake" +When you speak one language and the computer thinks you’re +speaking another. You’ll see odd translations when you send UTF‑8, for +instance, but the computer thinks you sent Latin\-1, showing all sorts of +weird characters instead. The term is written 「文字化け」in Japanese and +means “character rot”, an apt description. Pronounced [\f(CW\*(C`modʑibake\*(C'\fR] in +standard \fBIPA\fR phonetics, or approximately “moh\-jee\-bah\-keh”. +.IX Xref "mojibake" +.IP monger 4 +.IX Item "monger" +Short for one member of \fBPerl mongers\fR, a +purveyor of Perl. +.IX Xref "mongers, Perl Perl mongers" +.IP mortal 4 +.IX Item "mortal" +A temporary value scheduled to die when the +current statement finishes. +.IX Xref "mortal value values, mortal" +.IP mro 4 +.IX Item "mro" +See \fBmethod resolution order\fR. +.IP "multidimensional array" 4 +.IX Item "multidimensional array" +An array with multiple +subscripts for finding a single element. Perl implements these using +\&\fBreferences\fR—see Camel chapter 9, “Data Structures”. +.IX Xref "multidimensional arrays arrays, multidimensional" +.IP "multiple inheritance" 4 +.IX Item "multiple inheritance" +The features you got from +your mother and father, mixed together unpredictably. (See also +\&\fBinheritance\fR and \fBsingle inheritance\fR.) In computer languages (including +Perl), it is the notion that a given class may have multiple direct +ancestors or \fBbase classes\fR. +.IX Xref "multiple inheritance inheritance, multiple" +.SS N +.IX Subsection "N" +.IP "named pipe" 4 +.IX Item "named pipe" +A \fBpipe\fR with a name embedded in the +\&\fBfilesystem\fR so that it can be accessed by two unrelated \fBprocesses\fR. +.IX Xref "named pipes pipes, names" +.IP namespace 4 +.IX Item "namespace" +A domain of names. You needn’t worry about whether the +names in one such domain have been used in another. See \fBpackage\fR. +.IX Xref "namespaces, about" +.IP NaN 4 +.IX Item "NaN" +Not a number. The value Perl uses +for certain invalid or inexpressible floating-point operations. +.IX Xref "NaN (not a number) not a number (NaN)" +.IP "network address" 4 +.IX Item "network address" +The most important attribute of a socket, like your +telephone’s telephone number. Typically an IP address. See also \fBport\fR. +.IX Xref "network address" +.IP newline 4 +.IX 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 \f(CW\*(C`\en\*(C'\fR 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. +.IX Xref "newline character characters, newline" +.IP NFS 4 +.IX Item "NFS" +Network File System, which allows you to mount a remote filesystem as if it were local. +.IX Xref "NFS (Network File System) Network File System (NFS)" +.IP normalization 4 +.IX Item "normalization" +Converting a text string into an alternate but equivalent +\&\fBcanonical\fR (or compatible) representation that can then be compared for +equivalence. Unicode recognizes four different normalization forms: NFD, +NFC, NFKD, and NFKC. +.IX Xref "normalization" +.IP "null character" 4 +.IX Item "null character" +A character with the numeric value of +zero. It’s used by C to terminate strings, but Perl allows strings to +contain a null. +.IX Xref "null character characters, null" +.IP "null list" 4 +.IX Item "null list" +A \fBlist value\fR with zero elements, represented +in Perl by \f(CW\*(C`()\*(C'\fR. +.IX Xref "null lists lists, null" +.IP "null string" 4 +.IX Item "null string" +A \fBstring\fR containing no characters, not to +be confused with a string containing a \fBnull character\fR, which has a +positive length and is \fBtrue\fR. +.IX Xref "null strings strings, null" +.IP "numeric context" 4 +.IX Item "numeric context" +The situation in which an expression +is expected by its surroundings (the code calling it) to return a number. +See also \fBcontext\fR and \fBstring context\fR. +.IX Xref "numeric context context, numeric" +.IP numification 4 +.IX Item "numification" +(Sometimes spelled \fInummification\fR and \fInummify\fR.) Perl lingo +for implicit conversion into a number; the related verb is \fInumify\fR. +\&\fINumification\fR is intended to rhyme with \fImummification\fR, and \fInumify\fR with +\&\fImummify\fR. It is unrelated to English \fInumen\fR, \fInumina\fR, \fInuminous\fR. We +originally forgot the extra \fIm\fR a long time ago, and some people got used to +our funny spelling, and so just as with \f(CW\*(C`HTTP_REFERER\*(C'\fR’s own missing letter, +our weird spelling has stuck around. +.IX Xref "numification" +.IP NV 4 +.IX 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 \fBscalar\fR can hold, not to be +confused with an \fBIV\fR. +.IX Xref "Numeric Value (NV) NV (Numeric Value)" +.IP nybble 4 +.IX Item "nybble" +Half a \fBbyte\fR, equivalent to one \fBhexadecimal\fR digit, and worth +four \fBbits\fR. +.IX Xref "nybble" +.SS O +.IX Subsection "O" +.IP object 4 +.IX Item "object" +An \fBinstance\fR of a \fBclass\fR. 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. +.IX Xref "objects, defined" +.IP octal 4 +.IX 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 \f(CW\*(C`oct\*(C'\fR function. +.IX Xref "octals" +.IP offset 4 +.IX 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. +.IX Xref "offsets in strings strings, offsets in" +.IP one-liner 4 +.IX Item "one-liner" +An entire computer program crammed into one line of +text. +.IX Xref "one–liner programs" +.IP "open source software" 4 +.IX 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 <http://www.opensource.org/osd.html>. +.IX Xref "open source software" +.IP operand 4 +.IX Item "operand" +An \fBexpression\fR that yields a \fBvalue\fR that an +\&\fBoperator\fR operates on. See also \fBprecedence\fR. +.IX Xref "operands (term)" +.IP "operating system" 4 +.IX Item "operating system" +A special program that runs on the bare +machine and hides the gory details of managing \fBprocesses\fR and \fBdevices\fR. +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 +\&\fBarchitecture\fR and \fBplatform\fR. +.IX Xref "operating systems, defined" +.IP operator 4 +.IX 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 \fBtypes\fR of data you give as its arguments (\fBoperands\fR) and what type +of data you want back from it. +.IX Xref "operators, about" +.IP "operator overloading" 4 +.IX Item "operator overloading" +A kind of +\&\fBoverloading\fR that you can do on built-in \fBoperators\fR to make them work +on \fBobjects\fR as if the objects were ordinary scalar values, but with the +actual semantics supplied by the object class. This is set up with the +overload \fBpragma\fR—see Camel chapter 13, “Overloading”. +.IX Xref "operator overloading, about overloading, operator" +.IP options 4 +.IX Item "options" +See either \fBswitches\fR or \fBregular expression modifiers\fR. +.IX Xref "options" +.IP ordinal 4 +.IX Item "ordinal" +An abstract character’s integer value. Same thing as +\&\fBcodepoint\fR. +.IX Xref "ordinals (term)" +.IP overloading 4 +.IX 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 \fBcontext\fR. +.IX Xref "overloading, defined" +.IP overriding 4 +.IX Item "overriding" +Hiding or invalidating some other definition of the +same name. (Not to be confused with \fBoverloading\fR, 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 \fBsubroutine\fR to hide a built-in \fBfunction\fR of the same +name (see the section “Overriding Built-in Functions” in Camel chapter 11, +“Modules”), and to describe how you can define a replacement \fBmethod\fR in a +\&\fBderived class\fR to hide a \fBbase class\fR’s method of the same name (see +Camel chapter 12, “Objects”). +.IX Xref "overriding, defined" +.IP owner 4 +.IX Item "owner" +The one user (apart from the +superuser) who has absolute control over a \fBfile\fR. A file may also have a +\&\fBgroup\fR of users who may exercise joint ownership if the real owner +permits it. See \fBpermission bits\fR. +.IX Xref "ownership, file files, ownership of" +.SS P +.IX Subsection "P" +.IP package 4 +.IX Item "package" +A \fBnamespace\fR for global \fBvariables\fR, \fBsubroutines\fR, +and the like, such that they can be kept separate from like-named +\&\fBsymbols\fR 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 \fBcompiled\fR outside the package by naming the package. But in another +sense, all package symbols are also globals—they’re just well-organized +globals. +.IX Xref "packages, defined" +.IP pad 4 +.IX Item "pad" +Short for \fBscratchpad\fR. +.IX Xref "pads (scratchpads)" +.IP parameter 4 +.IX Item "parameter" +See \fBargument\fR. +.IX Xref "parameters" +.IP "parent class" 4 +.IX Item "parent class" +See \fBbase class\fR. +.IX Xref "parent classes classes, parent" +.IP "parse tree" 4 +.IX Item "parse tree" +See \fBsyntax tree\fR. +.IX Xref "parse tree" +.IP parsing 4 +.IX Item "parsing" +The subtle but sometimes brutal art of attempting to turn +your possibly malformed program into a valid \fBsyntax tree\fR. +.IX Xref "parsing, about" +.IP patch 4 +.IX 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 \fBpatch\fR(1) program when you want to fix a bug or upgrade +your old version. +.IX Xref "patches" +.IP PATH 4 +.IX Item "PATH" +The list of +\&\fBdirectories\fR the system searches to find a program you want to +\&\fBexecute\fR. The list is stored as one of your \fBenvironment variables\fR, +accessible in Perl as \f(CW$ENV{PATH}\fR. +.IX Xref "PATH environment variable variables, environment" +.IP pathname 4 +.IX Item "pathname" +A fully qualified filename such as \fI/usr/bin/perl\fR. Sometimes +confused with \f(CW\*(C`PATH\*(C'\fR. +.IX Xref "pathname" +.IP pattern 4 +.IX Item "pattern" +A template used in \fBpattern matching\fR. +.IX Xref "patterns, defined" +.IP "pattern matching" 4 +.IX Item "pattern matching" +Taking a pattern, usually a \fBregular +expression\fR, 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. +.IX Xref "pattern matching, about" +.IP PAUSE 4 +.IX Item "PAUSE" +The Perl Authors Upload SErver (<http://pause.perl.org>), the gateway +for \fBmodules\fR on their way to \fBCPAN\fR. +.IX Xref "Perl Authors Upload SErver (PAUSE) PAUSE (Perl Authors Upload SErver)" +.IP "Perl mongers" 4 +.IX Item "Perl mongers" +A Perl user group, taking the form of its +name from the New York Perl mongers, the first Perl user group. Find one +near you at <http://www.pm.org>. +.IX Xref "Perl mongers mongers, Perl" +.IP "permission bits" 4 +.IX Item "permission bits" +Bits that the \fBowner\fR of a file sets +or unsets to allow or disallow access to other people. These flag bits are +part of the \fBmode\fR word returned by the \f(CW\*(C`stat\*(C'\fR built-in when you ask +about a file. On Unix systems, you can check the \fIls\fR(1) manpage for more +information. +.IX Xref "permission bits bits, permission" +.IP Pern 4 +.IX Item "Pern" +What you get when you do \f(CW\*(C`Perl++\*(C'\fR twice. Doing it only once +will curl your hair. You have to increment it eight times to shampoo your +hair. Lather, rinse, iterate. +.IX Xref "Pern (term)" +.IP pipe 4 +.IX Item "pipe" +A direct \fBconnection\fR that carries the output of one +\&\fBprocess\fR 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. +.IX Xref "pipes, defined" +.IP pipeline 4 +.IX Item "pipeline" +A series of \fBprocesses\fR all in a row, linked by \fBpipes\fR, where +each passes its output stream to the next. +.IX Xref "pipeline" +.IP platform 4 +.IX 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 the following: machine, operating system, +libraries, compiler, or system configuration. The \fIperl\fR interpreter has +to be \fBcompiled\fR differently for each platform because it is implemented +in C, but programs written in the Perl language are largely platform +independent. +.IX Xref "platforms, defined" +.IP pod 4 +.IX Item "pod" +The markup +used to embed documentation into your Perl code. Pod stands for “Plain old +documentation”. See Camel chapter 23, “Plain Old Documentation”. +.IX Xref "pod (plain old documentation), about plain old documentation" +.IP "pod command" 4 +.IX Item "pod command" +A sequence, such as \f(CW\*(C`=head1\*(C'\fR, that denotes +the start of a \fBpod\fR section. +.IX Xref "pod commands commands, pod" +.IP pointer 4 +.IX Item "pointer" +A \fBvariable\fR 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 \fBkeys\fR and \fBvariable\fR names, or \fBhard references\fR, which +aren’t pointers (but act like pointers and do in fact contain pointers). +.IX Xref "pointers" +.IP polymorphism 4 +.IX Item "polymorphism" +The notion that you can tell an \fBobject\fR to do something +generic, and the object will interpret the command in different ways +depending on its type. [< Greek πολυ\- + μορϕή, many forms.] +.IX Xref "polymorphism" +.IP port 4 +.IX 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. +.IX Xref "ports (term)" +.IP portable 4 +.IX 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 +\&\fBplatform\fR, where “easily” can be defined however you like, and usually +is. Anything may be considered portable if you try hard enough, such as a +mobile home or London Bridge. +.IX Xref "portability, about" +.IP porter 4 +.IX Item "porter" +Someone who “carries” software from one \fBplatform\fR 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. +.IX Xref "porters" +.IP possessive 4 +.IX Item "possessive" +Said of quantifiers and groups in patterns that refuse +to give up anything once they’ve gotten their mitts on it. Catchier and +easier to say than the even more formal \fInonbacktrackable\fR. +.IX Xref "possessive (term)" +.IP POSIX 4 +.IX Item "POSIX" +The Portable Operating System Interface +specification. +.IX Xref "Portable Operating System Interface (POSIX), about POSIX (Portable Operating System Interface), about" +.IP postfix 4 +.IX Item "postfix" +An \fBoperator\fR that follows its \fBoperand\fR, as in +\&\f(CW\*(C`$x++\*(C'\fR. +.IX Xref "postfix operator" +.IP pp 4 +.IX Item "pp" +An internal shorthand for a +“push\- pop” code; that is, C code implementing Perl’s stack machine. +.IX Xref "pp (push–pop) code push–pop (pp) code" +.IP pragma 4 +.IX Item "pragma" +A standard module whose practical hints and +suggestions are received (and possibly ignored) at compile time. Pragmas +are named in all lowercase. +.IX Xref "pragmas, about modules" +.IP precedence 4 +.IX 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. +.IX Xref "precedence rules, about operators, precedence rules" +.IP prefix 4 +.IX Item "prefix" +An \fBoperator\fR that precedes its \fBoperand\fR, as in +\&\f(CW\*(C`++$x\*(C'\fR. +.IX Xref "prefix operators" +.IP preprocessing 4 +.IX Item "preprocessing" +What some helper \fBprocess\fR did to transform the incoming +data into a form more suitable for the current process. Often done with an +incoming \fBpipe\fR. See also \fBC preprocessor\fR. +.IX Xref "preprocessing" +.IP "primary maintainer" 4 +.IX Item "primary maintainer" +The author that PAUSE allows to assign \fBco-maintainer\fR +permissions to a \fBnamespace\fR. A primary maintainer can give up this +distinction by assigning it to another PAUSE author. See Camel chapter 19, +“CPAN”. +.IX Xref "primary maintainer" +.IP procedure 4 +.IX Item "procedure" +A \fBsubroutine\fR. +.IX Xref "procedures, defined" +.IP process 4 +.IX 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 \f(CW\*(C`fork\*(C'\fR 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. +.IX Xref "processes, defined" +.IP program 4 +.IX Item "program" +See \fBscript\fR. +.IP "program generator" 4 +.IX Item "program generator" +A system that algorithmically writes code for you in a +high-level language. See also \fBcode generator\fR. +.IX Xref "program generators" +.IP "progressive matching" 4 +.IX Item "progressive matching" +\&\fBPattern matching\fR matching>that picks up where it left off before. +.IX Xref "progressive matching pattern matching, progressive matching" +.IP property 4 +.IX Item "property" +See either \fBinstance variable\fR or \fBcharacter property\fR. +.IX Xref "property" +.IP protocol 4 +.IX Item "protocol" +In networking, an agreed-upon way of sending messages +back and forth so that neither correspondent will get too confused. +.IX Xref "protocols (term)" +.IP prototype 4 +.IX Item "prototype" +An optional part of a \fBsubroutine\fR declaration telling +the Perl compiler how many and what flavor of arguments may be passed as +\&\fBactual arguments\fR, so you can write subroutine calls that parse much like +built-in functions. (Or don’t parse, as the case may be.) +.IX Xref "prototypes, about" +.IP pseudofunction 4 +.IX Item "pseudofunction" +A construct that sometimes looks like a function but really +isn’t. Usually reserved for \fBlvalue\fR modifiers like \f(CW\*(C`my\*(C'\fR, for \fBcontext\fR +modifiers like \f(CW\*(C`scalar\*(C'\fR, and for the pick-your-own-quotes constructs, +\&\f(CW\*(C`q//\*(C'\fR, \f(CW\*(C`qq//\*(C'\fR, \f(CW\*(C`qx//\*(C'\fR, \f(CW\*(C`qw//\*(C'\fR, \f(CW\*(C`qr//\*(C'\fR, \f(CW\*(C`m//\*(C'\fR, \f(CW\*(C`s///\*(C'\fR, \f(CW\*(C`y///\*(C'\fR, and +\&\f(CW\*(C`tr///\*(C'\fR. +.IX Xref "pseudofunctions constructs, pseudofunctions functions, pseudofunctions" +.IP pseudohash 4 +.IX Item "pseudohash" +Formerly, a reference to an array +whose initial element happens to hold a reference to a hash. You used to be +able to treat a pseudohash reference as either an array reference or a hash +reference. Pseudohashes are no longer supported. +.IX Xref "pseudohashes hashes, pseudohashes" +.IP pseudoliteral 4 +.IX Item "pseudoliteral" +An \fBoperator\fR X\f(CW\*(C`that looks something like a \fR\f(CBliteral\fR\f(CW, +such as the output\-grabbing operator, <literal +moreinfo="none"\*(C'\fR`>\fR\f(CI\*(C`command\*(C'\fR\fI\fR\f(CW\*(C`\`\*(C'\fR. +.IX Xref "pseudoliterals" +.IP "public domain" 4 +.IX Item "public domain" +Something not owned by anybody. Perl is copyrighted and is +thus \fInot\fR in the public domain—it’s just \fBfreely available\fR and \fBfreely +redistributable\fR. +.IX Xref "public domain" +.IP pumpkin 4 +.IX Item "pumpkin" +A notional “baton” handed around the Perl community +indicating who is the lead integrator in some arena of development. +.IX Xref "pumpkin (term)" +.IP pumpking 4 +.IX Item "pumpking" +A \fBpumpkin\fR 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. +.IX Xref "pumpking" +.IP PV 4 +.IX Item "PV" +A “pointer value”, which is Perl +Internals Talk for a \f(CW\*(C`char*\*(C'\fR. +.IX Xref "PV (pointer value) pointer value (PV)" +.SS Q +.IX Subsection "Q" +.IP qualified 4 +.IX Item "qualified" +Possessing a complete name. The symbol \f(CW$Ent::moot\fR is +qualified; \f(CW$moot\fR is unqualified. A fully qualified filename is specified +from the top-level directory. +.IX Xref "qualified (term)" +.IP quantifier 4 +.IX Item "quantifier" +A component of a \fBregular expression\fR specifying how +many times the foregoing \fBatom\fR may occur. +.IX Xref "quantifiers, about" +.SS R +.IX Subsection "R" +.IP "race condition" 4 +.IX Item "race condition" +A race condition exists when the result of +several interrelated events depends on the ordering of those events, but +that order cannot be guaranteed due to nondeterministic timing effects. If +two or more programs, or parts of the same program, try to go through the +same series of events, one might interrupt the work of the other. This is a +good way to find an \fBexploit\fR. +.IX Xref "race conditions, defined" +.IP readable 4 +.IX 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. +.IX Xref "readable (term)" +.IP reaping 4 +.IX Item "reaping" +The last rites performed by a parent \fBprocess\fR +on behalf of a deceased child process so that it doesn’t remain a +\&\fBzombie\fR. See the \f(CW\*(C`wait\*(C'\fR and \f(CW\*(C`waitpid\*(C'\fR function calls. +.IX Xref "reaping zombie processes" +.IP record 4 +.IX Item "record" +A set of related data values in a \fBfile\fR or \fBstream\fR, +often associated with a unique \fBkey\fR field. In Unix, often commensurate +with a \fBline\fR, or a blank\-line–terminated set of lines (a “paragraph”). +Each line of the \fI/etc/passwd\fR file is a record, keyed on login name, +containing information about that user. +.IX Xref "records, defined" +.IP recursion 4 +.IX 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). +.IX Xref "recursion, defined" +.IP reference 4 +.IX Item "reference" +Where you look to find a pointer to information +somewhere else. (See \fBindirection\fR.) References come in two flavors: +\&\fBsymbolic references\fR and \fBhard references\fR. +.IX Xref "references, about" +.IP referent 4 +.IX 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. +.IX Xref "referents, defined" +.IP regex 4 +.IX Item "regex" +See \fBregular expression\fR. +.IP "regular expression" 4 +.IX 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: \f(CW\*(C`/Oh s.*t./\*(C'\fR. This will match strings like +“\f(CW\*(C`Oh say can you see by the dawn\*(Aqs early light\*(C'\fR” and “\f(CW\*(C`Oh sit!\*(C'\fR”. See +Camel chapter 5, “Pattern Matching”. +.IX Xref "regular expressions, defined" +.IP "regular expression modifier" 4 +.IX Item "regular expression modifier" +An option on a pattern or substitution, such as \f(CW\*(C`/i\*(C'\fR to render the pattern +case\- insensitive. +.IX Xref "regular expression modifiers modifiers, regular expression" +.IP "regular file" 4 +.IX Item "regular file" +A \fBfile\fR that’s not a \fBdirectory\fR, a +\&\fBdevice\fR, a named \fBpipe\fR or \fBsocket\fR, or a \fBsymbolic link\fR. Perl uses +the \f(CW\*(C`–f\*(C'\fR file test operator to identify regular files. Sometimes called a +“plain” file. +.IX Xref "regular files files, regular" +.IP "relational operator" 4 +.IX Item "relational operator" +An \fBoperator\fR that says whether a particular +ordering relationship is \fBtrue\fR about a pair of \fBoperands\fR. Perl has both +numeric and string relational operators. See \fBcollating sequence\fR. +.IX Xref "relational operators" +.IP "reserved words" 4 +.IX Item "reserved words" +A word with a specific, built-in meaning +to a \fBcompiler\fR, such as \f(CW\*(C`if\*(C'\fR or \f(CW\*(C`delete\*(C'\fR. 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 +\&\fBlabels\fR or \fBfilehandles\fR. Also called “keywords”. +.IX Xref "reserved words keywords (term)" +.IP "return value" 4 +.IX Item "return value" +The \fBvalue\fR produced by a \fBsubroutine\fR +or \fBexpression\fR when evaluated. In Perl, a return value may be either a +\&\fBlist\fR or a \fBscalar\fR. +.IX Xref "return values values, return" +.IP RFC 4 +.IX Item "RFC" +Request For Comment, which despite the timid connotations is the name of a series of +important standards documents. +.IX Xref "Request For Comment (RFC) RFC (Request For Comment)" +.IP "right shift" 4 +.IX Item "right shift" +A \fBbit shift\fR that divides +a number by some power of 2. +.IX Xref "right shift (>>) bit operator bit–shift operators, right shift >> (right shift) bit operator" +.IP role 4 +.IX Item "role" +A name for a concrete set of behaviors. A role is a way to +add behavior to a class without inheritance. +.IX Xref "roles (term)" +.IP root 4 +.IX Item "root" +The superuser (\f(CW\*(C`UID\*(C'\fR == 0). Also the top-level directory of +the filesystem. +.IX Xref "root (term)" +.IP RTFM 4 +.IX Item "RTFM" +What you are told when someone thinks you should Read The +Fine Manual. +.IX Xref "RTFM acronym" +.IP "run phase" 4 +.IX Item "run phase" +Any time after Perl starts running your main program. +See also \fBcompile phase\fR. Run phase is mostly spent in \fBruntime\fR but may +also be spent in \fBcompile time\fR when \f(CW\*(C`require\*(C'\fR, \f(CW\*(C`do\*(C'\fR \fR\f(CI\*(C`FILE\*(C'\fR\fI\fR, or +\&\f(CW\*(C`eval\*(C'\fR \fI\fR\f(CI\*(C`STRING\*(C'\fR\fI\fR operators are executed, or when a substitution uses +the \f(CW\*(C`/ee\*(C'\fR modifier. +.IX Xref "run phase, defined" +.IP runtime 4 +.IX Item "runtime" +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 \fBcompile time\fR. +.IX Xref "runtime (term), defined" +.IP "runtime pattern" 4 +.IX Item "runtime pattern" +A pattern that contains one or more +variables to be interpolated before parsing the pattern as a \fBregular +expression\fR, and that therefore cannot be analyzed at compile time, but +must be reanalyzed each time the pattern match operator is evaluated. +Runtime patterns are useful but expensive. +.IX Xref "runtime patterns patterns, runtime" +.IP RV 4 +.IX Item "RV" +A recreational vehicle, not +to be confused with vehicular recreation. RV also means an internal +Reference Value of the type a \fBscalar\fR can hold. See also \fBIV\fR and \fBNV\fR +if you’re not confused yet. +.IX Xref "Reference Value (RV) RV (Reference Value)" +.IP rvalue 4 +.IX Item "rvalue" +A \fBvalue\fR that you might find on the +right side of an \fBassignment\fR. See also \fBlvalue\fR. +.IX Xref "rvalue (term) values, rvalue" +.SS S +.IX Subsection "S" +.IP sandbox 4 +.IX Item "sandbox" +A walled off area that’s not supposed to affect beyond +its walls. You let kids play in the sandbox instead of running in the road. +See Camel chapter 20, “Security”. +.IX Xref "sandbox, defined" +.IP scalar 4 +.IX Item "scalar" +A simple, singular value; a number, \fBstring\fR, or +\&\fBreference\fR. +.IX Xref "scalars, defined" +.IP "scalar context" 4 +.IX Item "scalar context" +The situation in which an +\&\fBexpression\fR is expected by its surroundings (the code calling it) to +return a single \fBvalue\fR rather than a \fBlist\fR of values. See also +\&\fBcontext\fR and \fBlist context\fR. A scalar context sometimes imposes +additional constraints on the return value—see \fBstring context\fR and +\&\fBnumeric context\fR. Sometimes we talk about a \fBBoolean context\fR inside +conditionals, but this imposes no additional constraints, since any scalar +value, whether numeric or \fBstring\fR, is already true or false. +.IX Xref "scalar context, about context, scalar" +.IP "scalar literal" 4 +.IX Item "scalar literal" +A number or quoted \fBstring\fR—an actual +\&\fBvalue\fR in the text of your program, as opposed to a \fBvariable\fR. +.IX Xref "scalar literals literals, scalar" +.IP "scalar value" 4 +.IX Item "scalar value" +A value that happens to be a +\&\fBscalar\fR as opposed to a \fBlist\fR. +.IX Xref "scalar values, about values, scalar SV" +.IP "scalar variable" 4 +.IX Item "scalar variable" +A \fBvariable\fR prefixed with +\&\f(CW\*(C`$\*(C'\fR that holds a single value. +.IX Xref "scalar variables, defined variables, scalar" +.IP scope 4 +.IX Item "scope" +From how far away you can see a variable, looking through +one. Perl has two visibility mechanisms. It does \fBdynamic scoping\fR of +\&\f(CW\*(C`local\*(C'\fR \fBvariables\fR, meaning that the rest of the \fBblock\fR, and any +\&\fBsubroutines\fR that are called by the rest of the block, can see the +variables that are local to the block. Perl does \fBlexical scoping\fR of +\&\f(CW\*(C`my\*(C'\fR variables, meaning that the rest of the block can see the variable, +but other subroutines called by the block \fIcannot\fR see the variable. +.IX Xref "scopes, defined" +.IP scratchpad 4 +.IX 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. +.IX Xref "scratchpads" +.IP script 4 +.IX Item "script" +A text \fBfile\fR that is a program +intended to be \fBexecuted\fR directly rather than \fBcompiled\fR to another form +of file before \fBexecution\fR. +.IX Xref "scripts (term) programs, defined" +.Sp +Also, in the context of \fBUnicode\fR, a writing system for a particular +language or group of languages, such as Greek, Bengali, or Tengwar. +.IP "script kiddie" 4 +.IX Item "script kiddie" +A \fBcracker\fR who is not a \fBhacker\fR but knows just enough +to run canned scripts. A \fBcargo-cult\fR programmer. +.IX Xref "script kiddie" +.IP sed 4 +.IX Item "sed" +A venerable Stream EDitor from +which Perl derives some of its ideas. +.IX Xref "sed (Stream EDitor) Stream EDitor (sed)" +.IP semaphore 4 +.IX Item "semaphore" +A fancy kind of interlock that prevents multiple \fBthreads\fR or +\&\fBprocesses\fR from using up the same resources simultaneously. +.IX Xref "semaphore" +.IP separator 4 +.IX Item "separator" +A \fBcharacter\fR or \fBstring\fR that keeps two surrounding strings from being +confused with each other. The \f(CW\*(C`split\*(C'\fR function works on separators. Not to be confused with \fBdelimiters\fR +or \fBterminators\fR. The “or” in the previous sentence separated the two +alternatives. +.IX Xref "separators characters, separators strings, separators split function, separators and" +.IP serialization 4 +.IX Item "serialization" +Putting a fancy \fBdata structure\fR into +linear order so that it can be stored as a \fBstring\fR in a disk file or +database, or sent through a \fBpipe\fR. Also called marshalling. +.IX Xref "serialization marshalling (term)" +.IP server 4 +.IX Item "server" +In networking, a \fBprocess\fR that +either advertises a \fBservice\fR or just hangs around at a known location and +waits for \fBclients\fR who need service to get in touch with it. +.IX Xref "servers, defined processes, server" +.IP service 4 +.IX 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 \f(CW\*(C`getservent\*(C'\fR +function. +.IX Xref "services (term) getservent function" +.IP setgid 4 +.IX Item "setgid" +Same as \fBsetuid\fR, only having to do with giving +away \fBgroup\fR privileges. +.IX Xref "setgid program, about" +.IP setuid 4 +.IX Item "setuid" +Said of a program that runs with the privileges of +its \fBowner\fR rather than (as is usually the case) the privileges of whoever +is running it. Also describes the bit in the mode word (\fBpermission bits\fR) +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. +.IX Xref "setuid program, about" +.IP "shared memory" 4 +.IX Item "shared memory" +A piece of \fBmemory\fR accessible by two +different \fBprocesses\fR who otherwise would not see each other’s memory. +.IX Xref "shared memory memory, shared" +.IP shebang 4 +.IX Item "shebang" +Irish for the whole McGillicuddy. In Perl culture, a +portmanteau of “sharp” and “bang”, meaning the \f(CW\*(C`#!\*(C'\fR sequence that tells +the system where to find the interpreter. +.IX Xref "shebang (term)" +.IP shell 4 +.IX Item "shell" +A \fBcommand\fR\-line \fBinterpreter\fR. The program that +interactively gives you a prompt, accepts one or more \fBlines\fR of input, +and executes the programs you mentioned, feeding each of them their proper +\&\fBarguments\fR and input data. Shells can also execute scripts containing +such commands. Under Unix, typical shells include the Bourne shell +(\fI/bin/sh\fR), the C shell (\fI/bin/csh\fR), and the Korn shell (\fI/bin/ksh\fR). +Perl is not strictly a shell because it’s not interactive (although Perl +programs can be interactive). +.IX Xref "shell program, defined" +.IP "side effects" 4 +.IX Item "side effects" +Something extra that happens when you evaluate an +\&\fBexpression\fR. 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 \f(CW$|\fR (\f(CW$AUTOFLUSH\fR) has the side effect of forcing a +flush after every \f(CW\*(C`write\*(C'\fR or \f(CW\*(C`print\*(C'\fR on the currently selected +filehandle. +.IX Xref "side effects" +.IP sigil 4 +.IX Item "sigil" +A glyph used in magic. Or, for Perl, the symbol in front +of a variable name, such as \f(CW\*(C`$\*(C'\fR, \f(CW\*(C`@\*(C'\fR, and \f(CW\*(C`%\*(C'\fR. +.IX Xref "sigils, defined" +.IP signal 4 +.IX Item "signal" +A bolt out of the blue; that is, an +event triggered by the \fBoperating system\fR, probably when you’re least +expecting it. +.IX Xref "signals and signal handling, about" +.IP "signal handler" 4 +.IX Item "signal handler" +A \fBsubroutine\fR 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 \fBexecute\fR. Under Perl, bolts out of the blue +are called signals, and you send them with the \f(CW\*(C`kill\*(C'\fR built-in. See the +\&\f(CW%SIG\fR hash in Camel chapter 25, “Special Names” and the section “Signals” +in Camel chapter 15, “Interprocess Communication”. +.IX Xref "handlers, signal" +.IP "single inheritance" 4 +.IX Item "single inheritance" +The features you got from your +mother, if she told you that you don’t have a father. (See also +\&\fBinheritance\fR and \fBmultiple inheritance\fR.) In computer languages, the +idea that \fBclasses\fR reproduce asexually so that a given class can only +have one direct ancestor or \fBbase class\fR. Perl supplies no such +restriction, though you may certainly program Perl that way if you like. +.IX Xref "single inheritance inheritance, single" +.IP slice 4 +.IX Item "slice" +A selection of any number of +\&\fBelements\fR from a \fBlist\fR, \fBarray\fR, or \fBhash\fR. +.IX Xref "slices of elements elements, slices of" +.IP slurp 4 +.IX Item "slurp" +To read an entire \fBfile\fR into a \fBstring\fR in one operation. +.IX Xref "slurp (term)" +.IP socket 4 +.IX Item "socket" +An endpoint for network communication among multiple +\&\fBprocesses\fR that works much like a telephone or a post office box. The +most important thing about a socket is its \fBnetwork address\fR (like a phone +number). Different kinds of sockets have different kinds of addresses—some +look like filenames, and some don’t. +.IX Xref "sockets, defined" +.IP "soft reference" 4 +.IX Item "soft reference" +See \fBsymbolic reference\fR. +.IX Xref "soft references references, soft" +.IP "source filter" 4 +.IX Item "source filter" +A special kind of \fBmodule\fR that does +\&\fBpreprocessing\fR on your script just before it gets to the \fBtokener\fR. +.IX Xref "source filters filters, source" +.IP stack 4 +.IX 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 \fBLIFO\fR. +.IX Xref "stacks, defined" +.IP standard 4 +.IX Item "standard" +Included in the official Perl distribution, as in a +standard module, a standard tool, or a standard Perl \fBmanpage\fR. +.IX Xref "standard (term)" +.IP "standard error" 4 +.IX Item "standard error" +The default output \fBstream\fR for nasty remarks that don’t belong in +\&\fBstandard output\fR. Represented within a Perl program by the output> \fBfilehandle\fR \f(CW\*(C`STDERR\*(C'\fR. You can use this +stream explicitly, but the \f(CW\*(C`die\*(C'\fR and \f(CW\*(C`warn\*(C'\fR built-ins write to your +standard error stream automatically (unless trapped or otherwise +intercepted). +.IX Xref "STDERR filehandle, about" +.IP "standard input" 4 +.IX Item "standard input" +The default input \fBstream\fR for your program, +which if possible shouldn’t care where its data is coming from. Represented +within a Perl program by the \fBfilehandle\fR \f(CW\*(C`STDIN\*(C'\fR. +.IX Xref "STDIN filehandle, about" +.IP "standard I/O" 4 +.IX Item "standard I/O" +A standard C library for doing \fBbuffered\fR input +and output to the \fBoperating system\fR. (The “standard” of standard I/O is +at most 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 \fBflush\fR the buffer +more often, just set the \f(CW$|\fR variable to a true value. +.IX Xref "standard I O I O (Input Output), standard Input Output (I O), standard STDIO filehandle" +.IP "Standard Library" 4 +.IX Item "Standard Library" +Everything that comes with the official +\&\fIperl\fR distribution. Some vendor versions of \fIperl\fR change their +distributions, leaving out some parts or including extras. See also +\&\fBdual-lived\fR. +.IX Xref "Standard Perl Library, about" +.IP "standard output" 4 +.IX Item "standard output" +The default output \fBstream\fR for your program, +which if possible shouldn’t care where its data is going. Represented +within a Perl program by the \fBfilehandle\fR \f(CW\*(C`STDOUT\*(C'\fR. +.IX Xref "STDOUT filehandle, about" +.IP statement 4 +.IX Item "statement" +A \fBcommand\fR 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 \fBdeclaration\fR, which doesn’t tell the +computer to do anything, but just to learn something. +.IX Xref "statements, about" +.IP "statement modifier" 4 +.IX Item "statement modifier" +A \fBconditional\fR or +\&\fBloop\fR that you put after the \fBstatement\fR instead of before, if you know +what we mean. +.IX Xref "statement modifiers, about modifiers, statement" +.IP static 4 +.IX 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 \fBvariable\fR, +\&\fBsubroutine\fR, or \fBmethod\fR. In Perl culture, the word is politely avoided. +.IX Xref "static (term)" +.Sp +If you’re a C or C++ programmer, you might be looking for Perl’s \f(CW\*(C`state\*(C'\fR +keyword. +.IP "static method" 4 +.IX Item "static method" +No such thing. See \fBclass method\fR. +.IX Xref "static methods methods, static" +.IP "static scoping" 4 +.IX Item "static scoping" +No such thing. See \fBlexical scoping\fR. +.IP "static variable" 4 +.IX Item "static variable" +No such thing. Just use a \fBlexical +variable\fR in a scope larger than your \fBsubroutine\fR, or declare it with +\&\f(CW\*(C`state\*(C'\fR instead of with \f(CW\*(C`my\*(C'\fR. +.IX Xref "static variables variables, static" +.IP "stat structure" 4 +.IX Item "stat structure" +A special internal spot +in which Perl keeps the information about the last \fBfile\fR on which you +requested information. +.IX Xref "stat structure data structures, stat structure" +.IP status 4 +.IX Item "status" +The \fBvalue\fR returned to the +parent \fBprocess\fR when one of its child processes dies. This value is +placed in the special variable \f(CW$?\fR. Its upper eight \fBbits\fR 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 \fIwait\fR(2). See \f(CW\*(C`system\*(C'\fR in Camel +chapter 27, “Functions”. +.IX Xref "status value values, status exit status" +.IP STDERR 4 +.IX Item "STDERR" +See \fBstandard error\fR. +.IP STDIN 4 +.IX Item "STDIN" +See \fBstandard input\fR. +.IP STDIO 4 +.IX Item "STDIO" +See \fBstandard I/O\fR. +.IP STDOUT 4 +.IX Item "STDOUT" +See \fBstandard output\fR. +.IP stream 4 +.IX 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 +\&\fBinterface\fR—the underlying \fBimplementation\fR may well break your data up +into separate packets for delivery, but this is hidden from you. +.IX Xref "streaming data processes, streaming data" +.IP string 4 +.IX Item "string" +A sequence of characters such as “He said !@#*&%@#*?!”. +A string does not have to be entirely printable. +.IX Xref "strings, defined" +.IP "string context" 4 +.IX Item "string context" +The situation in which an expression is +expected by its surroundings (the code calling it) to return a \fBstring\fR. +See also \fBcontext\fR and \fBnumeric context\fR. +.IX Xref "string context context, string" +.IP stringification 4 +.IX Item "stringification" +The process of producing a \fBstring\fR representation of an +abstract object. +.IX Xref "stringification" +.IP struct 4 +.IX Item "struct" +C keyword introducing a structure definition or name. +.IX Xref "struct keyword" +.IP structure 4 +.IX Item "structure" +See \fBdata structure\fR. +.IX Xref "structures" +.IP subclass 4 +.IX Item "subclass" +See \fBderived class\fR. +.IP subpattern 4 +.IX Item "subpattern" +A component of a \fBregular expression\fR pattern. +.IX Xref "subpatterns, defined" +.IP subroutine 4 +.IX Item "subroutine" +A named or otherwise accessible piece of program +that can be invoked from elsewhere in the program in order to accomplish +some subgoal of the program. A subroutine is often parameterized to +accomplish different but related things depending on its input +\&\fBarguments\fR. If the subroutine returns a meaningful \fBvalue\fR, it is also +called a \fBfunction\fR. +.IX Xref "subroutines, defined" +.IP subscript 4 +.IX Item "subscript" +A \fBvalue\fR that indicates the position of a particular +\&\fBarray\fR \fBelement\fR in an array. +.IX Xref "subscripts" +.IP substitution 4 +.IX Item "substitution" +Changing parts of a string via the \f(CW\*(C`s///\*(C'\fR +operator. (We avoid use of this term to mean \fBvariable interpolation\fR.) +.IX Xref "substitution (s ) operator, about strings, substitution in s (substitution) operator, about" +.IP substring 4 +.IX Item "substring" +A portion of a \fBstring\fR, starting at a certain +\&\fBcharacter\fR position (\fBoffset\fR) and proceeding for a certain number of +characters. +.IX Xref "substrings (term)" +.IP superclass 4 +.IX Item "superclass" +See \fBbase class\fR. +.IP superuser 4 +.IX Item "superuser" +The person whom the \fBoperating system\fR will let do almost +anything. Typically your system administrator or someone pretending to be +your system administrator. On Unix systems, the \fBroot\fR user. On Windows +systems, usually the Administrator user. +.IX Xref "superusers" +.IP SV 4 +.IX Item "SV" +Short for “scalar value”. But +within the Perl interpreter, every \fBreferent\fR is treated as a member of a +class derived from SV, in an object-oriented sort of way. Every \fBvalue\fR +inside Perl is passed around as a C language \f(CW\*(C`SV*\*(C'\fR pointer. The SV +\&\fBstruct\fR knows its own “referent type”, and the code is smart enough (we +hope) not to try to call a \fBhash\fR function on a \fBsubroutine\fR. +.IX Xref "scalar values, about values, scalar" +.IP switch 4 +.IX 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 \fBswitch statement\fR. +.IX Xref "switches, about switches" +.IP "switch cluster" 4 +.IX Item "switch cluster" +The combination of multiple command\- +line switches (\fIe.g.\fR, \f(CW\*(C`–a –b –c\*(C'\fR) into one switch (\fIe.g.\fR, \f(CW\*(C`–abc\*(C'\fR). +Any switch with an additional \fBargument\fR must be the last switch in a +cluster. +.IX Xref "switch clusters clusters, switch" +.IP "switch statement" 4 +.IX Item "switch statement" +A program technique that lets you +evaluate an \fBexpression\fR 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 \f(CW\*(C`given\*(C'\fR. See “The \f(CW\*(C`given\*(C'\fR +statement” in Camel chapter 4, “Statements and Declarations”. +.IX Xref "switch statement statements, switch" +.IP symbol 4 +.IX Item "symbol" +Generally, any \fBtoken\fR or \fBmetasymbol\fR. Often used +more specifically to mean the sort of name you might find in a \fBsymbol +table\fR. +.IX Xref "symbols symbols" +.IP "symbolic debugger" 4 +.IX Item "symbolic debugger" +A program that lets you step through +the \fBexecution\fR 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. +.IX Xref "symbolic debugger debugger, about" +.IP "symbolic link" 4 +.IX Item "symbolic link" +An alternate filename that points to the +real \fBfilename\fR, which in turn points to the real \fBfile\fR. Whenever the +\&\fBoperating system\fR is trying to parse a \fBpathname\fR containing a symbolic +link, it merely substitutes the new name and continues parsing. +.IX Xref "symbolic links links, symbolic" +.IP "symbolic reference" 4 +.IX Item "symbolic reference" +A variable whose value is the +name of another variable or subroutine. By \fBdereferencing\fR the first +variable, you can get at the second one. Symbolic references are illegal +under \f(CW\*(C`use strict "refs"\*(C'\fR. +.IX Xref "symbolic references references, symbolic" +.IP "symbol table" 4 +.IX Item "symbol table" +Where a \fBcompiler\fR remembers symbols. A program +like Perl must somehow remember all the names of all the \fBvariables\fR, +\&\fBfilehandles\fR, and \fBsubroutines\fR you’ve used. It does this by placing the +names in a symbol table, which is implemented in Perl using a \fBhash +table\fR. There is a separate symbol table for each \fBpackage\fR to give each +package its own \fBnamespace\fR. +.IX Xref "symbol tables, about" +.IP synchronous 4 +.IX 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. +.IX Xref "synchronous (term)" +.IP "syntactic sugar" 4 +.IX Item "syntactic sugar" +An alternative way of writing something more easily; a +shortcut. +.IX Xref "syntactic sugar" +.IP syntax 4 +.IX Item "syntax" +From Greek σύνταξις, “with\-arrangement”. How things +(particularly symbols) are put together with each other. +.IX Xref "syntax, about" +.IP "syntax tree" 4 +.IX Item "syntax tree" +An internal representation of your program wherein +lower-level \fBconstructs\fR dangle off the higher-level constructs enclosing +them. +.IX Xref "syntax tree" +.IP syscall 4 +.IX Item "syscall" +A \fBfunction\fR call directly to the \fBoperating +system\fR. 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 \f(CW$!\fR +(\f(CW$ERRNO\fR) variable on failure. Unfortunately, beginning programmers often +confusingly employ the term “system call” to mean what happens when you +call the Perl \f(CW\*(C`system\*(C'\fR function, which actually involves many syscalls. To +avoid any confusion, we nearly always say “syscall” for something you could +call indirectly via Perl’s \f(CW\*(C`syscall\*(C'\fR function, and never for something you +would call with Perl’s \f(CW\*(C`system\*(C'\fR function. +.IX Xref "syscall function, about" +.SS T +.IX Subsection "T" +.IP "taint checks" 4 +.IX Item "taint checks" +The special bookkeeping Perl does to track the flow +of external data through your program and disallow their use in system +commands. +.IX Xref "taint checks, about" +.IP tainted 4 +.IX 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 \fBsetuid\fR (or \fBsetgid\fR) program, or if you use the \f(CW\*(C`–T\*(C'\fR switch. +.IX Xref "tainted data, about" +.IP "taint mode" 4 +.IX Item "taint mode" +Running under the \f(CW\*(C`–T\*(C'\fR switch, marking all external data as +suspect and refusing to use it with system commands. See Camel chapter 20, +“Security”. +.IX Xref "taint mode" +.IP TCP 4 +.IX 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 \fBstream\fR of bytes. +(Usually.) +.IX Xref "TCP (Transmission Control Protocol) Transmission Control Protocol (TCP)" +.IP term 4 +.IX Item "term" +Short for a “terminal”—that is, a leaf node of a \fBsyntax +tree\fR. A thing that functions grammatically as an \fBoperand\fR for the +operators in an expression. +.IX Xref "terms, defined" +.IP terminator 4 +.IX Item "terminator" +A \fBcharacter\fR or \fBstring\fR that marks the end of another string. The \f(CW$/\fR +variable contains the string that terminates a \f(CW\*(C`readline\*(C'\fR operation, which +\&\f(CW\*(C`chomp\*(C'\fR deletes from the end. Not to be confused with \fBdelimiters\fR or +\&\fBseparators\fR. The period at the end of this sentence is a terminator. +.IX Xref "terminators (term) characters, terminators strings, terminators in" +.IP ternary 4 +.IX Item "ternary" +An \fBoperator\fR taking three \fBoperands\fR. Sometimes +pronounced \fBtrinary\fR. +.IX Xref "ternary operators" +.IP text 4 +.IX Item "text" +A \fBstring\fR or \fBfile\fR containing primarily printable characters. +.IX Xref "text, defined strings, text files, text text" +.IP thread 4 +.IX Item "thread" +Like a forked process, but without \fBfork\fR’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 one another. +.IX Xref "threads (term)" +.IP tie 4 +.IX Item "tie" +The bond between a magical variable and its +implementation class. See the \f(CW\*(C`tie\*(C'\fR function in Camel chapter 27, +“Functions” and Camel chapter 14, “Tied Variables”. +.IX Xref "tied variables, about" +.IP titlecase 4 +.IX Item "titlecase" +The case used for capitals +that are followed by lowercase characters instead of by more capitals. +Sometimes called sentence case or headline case. English doesn’t use +Unicode titlecase, but casing rules for English titles are more complicated +than simply capitalizing each word’s first character. +.IX Xref "titlecase characters characters, titlecase" +.IP TMTOWTDI 4 +.IX 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.) +.IX Xref "TMTOWTDI acronym" +.IP token 4 +.IX Item "token" +A morpheme in a programming language, the smallest unit +of text with semantic significance. +.IX Xref "tokens, defined" +.IP tokener 4 +.IX Item "tokener" +A module that breaks a program text into a sequence of +\&\fBtokens\fR for later analysis by a parser. +.IX Xref "tokeners, defined" +.IP tokenizing 4 +.IX Item "tokenizing" +Splitting up a program text into \fBtokens\fR. Also known as +“lexing”, in which case you get “lexemes” instead of tokens. +.IX Xref "tokenizing" +.IP "toolbox approach" 4 +.IX 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. +.IX Xref "toolbox approach" +.IP topic 4 +.IX Item "topic" +The thing you’re working on. Structures like +\&\f(CWwhile(<>)\fR, \f(CW\*(C`for\*(C'\fR, \f(CW\*(C`foreach\*(C'\fR, and \f(CW\*(C`given\*(C'\fR set the topic for +you by assigning to \f(CW$_\fR, the default (\fItopic\fR) variable. +.IX Xref "topics (term)" +.IP transliterate 4 +.IX 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. Not to be confused +with translation: for example, Greek \fIπολύχρωμος\fR transliterates into +\&\fIpolychromos\fR but translates into \fImany-colored\fR. See the \f(CW\*(C`tr///\*(C'\fR +operator in Camel chapter 5, “Pattern Matching”. +.IX Xref "tr (transliteration) operator, about strings, transliteration of transliteration (tr ) operator, about" +.IP trigger 4 +.IX Item "trigger" +An event that causes a \fBhandler\fR to be run. +.IX Xref "triggers (term)" +.IP trinary 4 +.IX Item "trinary" +Not a stellar system with three stars, but an +\&\fBoperator\fR taking three \fBoperands\fR. Sometimes pronounced \fBternary\fR. +.IX Xref "trinary operators" +.IP troff 4 +.IX Item "troff" +A venerable typesetting language from which Perl derives +the name of its \f(CW$%\fR variable and which is secretly used in the production +of Camel books. +.IX Xref "troff language" +.IP true 4 +.IX Item "true" +Any scalar value that doesn’t evaluate to 0 or +\&\f(CW""\fR. +.IX Xref "true values values, true" +.IP truncating 4 +.IX Item "truncating" +Emptying a file of existing +contents, either automatically when opening a file for writing or +explicitly via the \f(CW\*(C`truncate\*(C'\fR function. +.IX Xref "truncate function files, truncating" +.IP type 4 +.IX Item "type" +See \fBdata type\fR and \fBclass\fR. +.IX Xref "type" +.IP "type casting" 4 +.IX Item "type casting" +Converting data from one type to another. C permits this. +Perl does not need it. Nor want it. +.IX Xref "type casting" +.IP typedef 4 +.IX Item "typedef" +A type definition in the C and C++ languages. +.IX Xref "typedef" +.IP "typed lexical" 4 +.IX Item "typed lexical" +A \fBlexical variable\fR lexical>that is declared with a \fBclass\fR +type: \f(CW\*(C`my Pony $bill\*(C'\fR. +.IX Xref "typed lexicals lexical variables, typed lexicals variables, variable" +.IP typeglob 4 +.IX Item "typeglob" +Use of a single identifier, prefixed with \f(CW\*(C`*\*(C'\fR. For +example, \f(CW*name\fR stands for any or all of \f(CW$name\fR, \f(CW@name\fR, \f(CW%name\fR, +\&\f(CW&name\fR, or just \f(CW\*(C`name\*(C'\fR. How you use it determines whether it is +interpreted as all or only one of them. See “Typeglobs and Filehandles” in +Camel chapter 2, “Bits and Pieces”. +.IX Xref "typeglobs, defined" +.IP typemap 4 +.IX Item "typemap" +A description of how C types may be transformed to and from Perl +types within an \fBextension\fR module written in \fBXS\fR. +.IX Xref "typemap" +.SS U +.IX Subsection "U" +.IP UDP 4 +.IX Item "UDP" +User Datagram Protocol, the typical way to send +\&\fBdatagrams\fR over the Internet. +.IX Xref "User Datagram Protocol (UDP) UDP (User Datagram Protocol) datagrams, UDP support" +.IP UID 4 +.IX Item "UID" +A user ID. Often used in the context of +\&\fBfile\fR or \fBprocess\fR ownership. +.IX Xref "UID (user ID) user ID (UID)" +.IP umask 4 +.IX Item "umask" +A mask of those \fBpermission bits\fR 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 \f(CW\*(C`umask\*(C'\fR function. +.IX Xref "umask function" +.IP "unary operator" 4 +.IX Item "unary operator" +An operator with only one \fBoperand\fR, like \f(CW\*(C`!\*(C'\fR or +\&\f(CW\*(C`chdir\*(C'\fR. Unary operators are usually prefix operators; that is, they +precede their operand. The \f(CW\*(C`++\*(C'\fR and \f(CW\*(C`––\*(C'\fR operators can be either prefix +or postfix. (Their position \fIdoes\fR change their meanings.) +.IX Xref "unary operators, about" +.IP Unicode 4 +.IX Item "Unicode" +A character set comprising all the major character sets of +the world, more or less. See <http://www.unicode.org>. +.IX Xref "Unicode, about" +.IP Unix 4 +.IX 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. +.IX Xref "Unix language" +.Sp +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. +.IP uppercase 4 +.IX Item "uppercase" +In Unicode, not just +characters with the General Category of Uppercase Letter, but any character +with the Uppercase property, including some Letter Numbers and Symbols. Not +to be confused with \fBtitlecase\fR. +.IX Xref "uppercase characters characters, uppercase" +.SS V +.IX Subsection "V" +.IP value 4 +.IX Item "value" +An actual piece of data, in contrast to all the +variables, references, keys, indices, operators, and whatnot that you need +to access the value. +.IX Xref "values, defined" +.IP variable 4 +.IX Item "variable" +A named storage location that can hold any +of various kinds of \fBvalue\fR, as your program sees fit. +.IX Xref "variables, defined variables" +.IP "variable interpolation" 4 +.IX Item "variable interpolation" +The \fBinterpolation\fR of +a scalar or array variable into a string. +.IX Xref "variable interpolation interpolation, variable" +.IP variadic 4 +.IX Item "variadic" +Said of a \fBfunction\fR that happily receives an +indeterminate number of \fBactual arguments\fR. +.IX Xref "variadic (term)" +.IP vector 4 +.IX Item "vector" +Mathematical jargon for a list of \fBscalar values\fR. +.IX Xref "vectors" +.IP virtual 4 +.IX Item "virtual" +Providing the appearance of something without the reality, +as in: virtual memory is not real memory. (See also \fBmemory\fR.) 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. +.IX Xref "virtual (term)" +.IP "void context" 4 +.IX Item "void context" +A form of \fBscalar context\fR in which an +\&\fBexpression\fR is not expected to return any \fBvalue\fR at all and is +evaluated for its \fBside effects\fR alone. +.IX Xref "void context context, void" +.IP v\-string 4 +.IX Item "v-string" +A “version” or “vector” \fBstring\fR +specified with a \f(CW\*(C`v\*(C'\fR followed by a series of decimal integers in dot +notation, for instance, \f(CW\*(C`v1.20.300.4000\*(C'\fR. Each number turns into a +\&\fBcharacter\fR with the specified ordinal value. (The \f(CW\*(C`v\*(C'\fR is optional when +there are at least three integers.) +.IX Xref "v–strings strings, v–strings" +.SS W +.IX Subsection "W" +.IP warning 4 +.IX Item "warning" +A message printed to the \f(CW\*(C`STDERR\*(C'\fR stream to the effect that something might be +wrong but isn’t worth blowing up over. See \f(CW\*(C`warn\*(C'\fR in Camel chapter 27, +“Functions” and the \f(CW\*(C`warnings\*(C'\fR pragma in Camel chapter 28, “Pragmantic +Modules”. +.IX Xref "warning messages STDERR filehandle, warning messages and" +.IP "watch expression" 4 +.IX Item "watch expression" +An expression which, when its value +changes, causes a breakpoint in the Perl debugger. +.IX Xref "watch expression expressions, watch" +.IP "weak reference" 4 +.IX Item "weak reference" +A reference that doesn’t get counted +normally. When all the normal references to data disappear, the data +disappears. These are useful for circular references that would never +disappear otherwise. +.IX Xref "weak references references, weak" +.IP whitespace 4 +.IX Item "whitespace" +A \fBcharacter\fR 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. In +Unicode, matches many other characters that Unicode considers whitespace, +including the ɴ\-ʙʀ . +.IX Xref "whitespace characters characters, whitespace" +.IP word 4 +.IX 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 +\&\fBidentifier\fR (including underscores), or to a string of nonwhitespace +\&\fBcharacters\fR bounded by whitespace or string boundaries. +.IX Xref "words (term)" +.IP "working directory" 4 +.IX Item "working directory" +Your current \fBdirectory\fR, from +which relative pathnames are interpreted by the \fBoperating system\fR. The +operating system knows your current directory because you told it with a +\&\f(CW\*(C`chdir\*(C'\fR, or because you started out in the place where your parent +\&\fBprocess\fR was when you were born. +.IX Xref "working directory directories, working" +.IP wrapper 4 +.IX 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. +.IX Xref "wrappers (term)" +.IP WYSIWYG 4 +.IX 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 +\&\f(CW\*(C`format\*(C'\fR declarations. Also used to mean the opposite of magic because +everything works exactly as it appears, as in the three\- argument form of +\&\f(CW\*(C`open\*(C'\fR. +.IX Xref "WYSIWYG acronym" +.SS X +.IX Subsection "X" +.IP XS 4 +.IX Item "XS" +An extraordinarily +exported, expeditiously excellent, expressly eXternal Subroutine, executed +in existing C or C++ or in an exciting extension language called +(exasperatingly) XS. +.IX Xref "XS (eXternal Subroutine) eXternal Subroutine (XS)" +.IP XSUB 4 +.IX Item "XSUB" +An external \fBsubroutine\fR defined in \fBXS\fR. +.IX Xref "XSUB (term)" +.SS Y +.IX Subsection "Y" +.IP yacc 4 +.IX Item "yacc" +Yet Another Compiler Compiler. A parser generator without +which Perl probably would not have existed. See the file \fIperly.y\fR in the +Perl source distribution. +.IX Xref "yacc acronym" +.SS Z +.IX Subsection "Z" +.IP "zero width" 4 +.IX Item "zero width" +A subpattern \fBassertion\fR matching the \fBnull +string\fR between \fBcharacters\fR. +.IX Xref "zero–width assertions subpatterns, zero–width assertions assertions (in regexes), zero–width" +.IP zombie 4 +.IX 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 \f(CW\*(C`wait\*(C'\fR or \f(CW\*(C`waitpid\*(C'\fR. If you \f(CW\*(C`fork\*(C'\fR, you must +clean up after your child processes when they exit; otherwise, the process +table will fill up and your system administrator will Not Be Happy with +you. +.IX Xref "zombie processes processes, zombie" +.SH "AUTHOR AND COPYRIGHT" +.IX Header "AUTHOR AND COPYRIGHT" +Based on the Glossary of \fIProgramming Perl\fR, Fourth Edition, +by Tom Christiansen, brian d foy, Larry Wall, & Jon Orwant. +Copyright (c) 2000, 1996, 1991, 2012 O'Reilly Media, Inc. +This document may be distributed under the same terms as Perl itself. |