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