1=head1 NAME
2
3perlglossary - Perl Glossary
4
5=head1 DESCRIPTION
6
7A glossary of terms (technical and otherwise) used in the Perl documentation.
8Other useful sources include the Free On-Line Dictionary of Computing
9L<http://foldoc.org/>, the Jargon File
10L<http://catb.org/~esr/jargon/>, and Wikipedia L<http://www.wikipedia.org/>.
11
12=head2 A
13
14=over 4
15
16=item accessor methods
17
18A L</method> used to indirectly inspect or update an L</object>'s
19state (its L<instance variables|/instance variable>).
20
21=item actual arguments
22
23The L<scalar values|/scalar value> that you supply to a L</function>
24or L</subroutine> when you call it.  For instance, when you call
25C<power("puff")>, the string C<"puff"> is the actual argument.  See
26also L</argument> and L</formal arguments>.
27
28=item address operator
29
30Some languages work directly with the memory addresses of values, but
31this can be like playing with fire.  Perl provides a set of asbestos
32gloves for handling all memory management.  The closest to an address
33operator in Perl is the backslash operator, but it gives you a L</hard
34reference>, which is much safer than a memory address.
35
36=item algorithm
37
38A well-defined sequence of steps, clearly enough explained that even a
39computer could do them.
40
41=item alias
42
43A nickname for something, which behaves in all ways as though you'd
44used the original name instead of the nickname.  Temporary aliases are
45implicitly created in the loop variable for C<foreach> loops, in the
46C<$_> variable for L<map|perlfunc/map> or L<grep|perlfunc/grep>
47operators, in C<$a> and C<$b> during L<sort|perlfunc/sort>'s
48comparison function, and in each element of C<@_> for the L</actual
49arguments> of a subroutine call.  Permanent aliases are explicitly
50created in L<packages|/package> by L<importing|/import> symbols or by
51assignment to L<typeglobs|/typeglob>.  Lexically scoped aliases for
52package variables are explicitly created by the L<our|perlfunc/our>
53declaration.
54
55=item alternatives
56
57A list of possible choices from which you may select only one, as in
58"Would you like door A, B, or C?"  Alternatives in regular expressions
59are separated with a single vertical bar: C<|>.  Alternatives in
60normal Perl expressions are separated with a double vertical bar:
61C<||>.  Logical alternatives in L</Boolean> expressions are separated
62with either C<||> or C<or>.
63
64=item anonymous
65
66Used to describe a L</referent> that is not directly accessible
67through a named L</variable>.  Such a referent must be indirectly
68accessible through at least one L</hard reference>.  When the last
69hard reference goes away, the anonymous referent is destroyed without
70pity.
71
72=item architecture
73
74The kind of computer you're working on, where one "kind" of computer
75means all those computers sharing a compatible machine language.
76Since Perl programs are (typically) simple text files, not executable
77images, a Perl program is much less sensitive to the architecture it's
78running on than programs in other languages, such as C, that are
79compiled into machine code.  See also L</platform> and L</operating
80system>.
81
82=item argument
83
84A piece of data supplied to a L<program|/executable file>,
85L</subroutine>, L</function>, or L</method> to tell it what it's
86supposed to do.  Also called a "parameter".
87
88=item ARGV
89
90The name of the array containing the L</argument> L</vector> from the
91command line.  If you use the empty C<< E<lt>E<gt> >> operator, L</ARGV> is
92the name of both the L</filehandle> used to traverse the arguments and
93the L</scalar> containing the name of the current input file.
94
95=item arithmetical operator
96
97A L</symbol> such as C<+> or C</> that tells Perl to do the arithmetic
98you were supposed to learn in grade school.
99
100=item array
101
102An ordered sequence of L<values|/value>, stored such that you can
103easily access any of the values using an integer L</subscript>
104that specifies the value's L</offset> in the sequence.
105
106=item array context
107
108An archaic expression for what is more correctly referred to as
109L</list context>.
110
111=item ASCII
112
113The American Standard Code for Information Interchange (a 7-bit
114character set adequate only for poorly representing English text).
115Often used loosely to describe the lowest 128 values of the various
116ISO-8859-X character sets, a bunch of mutually incompatible 8-bit
117codes sometimes described as half ASCII.  See also L</Unicode>.
118
119=item assertion
120
121A component of a L</regular expression> that must be true for the
122pattern to match but does not necessarily match any characters itself.
123Often used specifically to mean a L</zero width> assertion.
124
125=item assignment
126
127An L</operator> whose assigned mission in life is to change the value
128of a L</variable>.
129
130=item assignment operator
131
132Either a regular L</assignment>, or a compound L</operator> composed
133of an ordinary assignment and some other operator, that changes the
134value of a variable in place, that is, relative to its old value.  For
135example, C<$a += 2> adds C<2> to C<$a>.
136
137=item associative array
138
139See L</hash>.  Please.
140
141=item associativity
142
143Determines whether you do the left L</operator> first or the right
144L</operator> first when you have "A L</operator> B L</operator> C" and
145the two operators are of the same precedence.  Operators like C<+> are
146left associative, while operators like C<**> are right associative.
147See L<perlop> for a list of operators and their associativity.
148
149=item asynchronous
150
151Said of events or activities whose relative temporal ordering is
152indeterminate because too many things are going on at once.  Hence, an
153asynchronous event is one you didn't know when to expect.
154
155=item atom
156
157A L</regular expression> component potentially matching a
158L</substring> containing one or more characters and treated as an
159indivisible syntactic unit by any following L</quantifier>.  (Contrast
160with an L</assertion> that matches something of L</zero width> and may
161not be quantified.)
162
163=item atomic operation
164
165When Democritus gave the word "atom" to the indivisible bits of
166matter, he meant literally something that could not be cut: I<a->
167(not) + I<tomos> (cuttable).  An atomic operation is an action that
168can't be interrupted, not one forbidden in a nuclear-free zone.
169
170=item attribute
171
172A new feature that allows the declaration of L<variables|/variable>
173and L<subroutines|/subroutine> with modifiers as in C<sub foo : locked
174method>.  Also, another name for an L</instance variable> of an
175L</object>.
176
177=item autogeneration
178
179A feature of L</operator overloading> of L<objects|/object>, whereby
180the behavior of certain L<operators|/operator> can be reasonably
181deduced using more fundamental operators.  This assumes that the
182overloaded operators will often have the same relationships as the
183regular operators.  See L<perlop>.
184
185=item autoincrement
186
187To add one to something automatically, hence the name of the C<++>
188operator.  To instead subtract one from something automatically is
189known as an "autodecrement".
190
191=item autoload
192
193To load on demand.  (Also called "lazy" loading.)  Specifically, to
194call an L<AUTOLOAD|perlsub/Autoloading> subroutine on behalf of an
195undefined subroutine.
196
197=item autosplit
198
199To split a string automatically, as the B<-a> L</switch> does when
200running under B<-p> or B<-n> in order to emulate L</awk>.  (See also
201the L<AutoSplit> module, which has nothing to do with the B<-a>
202switch, but a lot to do with autoloading.)
203
204=item autovivification
205
206A Greco-Roman word meaning "to bring oneself to life".  In Perl,
207storage locations (L<lvalues|/lvalue>) spontaneously generate
208themselves as needed, including the creation of any L</hard reference>
209values to point to the next level of storage.  The assignment
210C<$a[5][5][5][5][5] = "quintet"> potentially creates five scalar
211storage locations, plus four references (in the first four scalar
212locations) pointing to four new anonymous arrays (to hold the last
213four scalar locations).  But the point of autovivification is that you
214don't have to worry about it.
215
216=item AV
217
218Short for "array value", which refers to one of Perl's internal data
219types that holds an L</array>.  The L</AV> type is a subclass of
220L</SV>.
221
222=item awk
223
224Descriptive editing term--short for "awkward".  Also coincidentally
225refers to a venerable text-processing language from which Perl derived
226some of its high-level ideas.
227
228=back
229
230=head2 B
231
232=over 4
233
234=item backreference
235
236A substring L<captured|/capturing> by a subpattern within
237unadorned parentheses in a L</regex>, also referred to as a capture group.  The
238sequences (C<\g1>, C<\g2>, etc.)  later in the same pattern refer back to
239the corresponding subpattern in the current match.  Outside the pattern,
240the numbered variables (C<$1>, C<$2>, etc.) continue to refer to these
241same values, as long as the pattern was the last successful match of
242the current dynamic scope.  C<\g{-1}> can be used to refer to a group by
243relative rather than absolute position; and groups can be also be named, and
244referred to later by name rather than number.  See L<perlre/"Capture groups">.
245
246=item backtracking
247
248The practice of saying, "If I had to do it all over, I'd do it
249differently," and then actually going back and doing it all over
250differently.  Mathematically speaking, it's returning from an
251unsuccessful recursion on a tree of possibilities.  Perl backtracks
252when it attempts to match patterns with a L</regular expression>, and
253its earlier attempts don't pan out.  See L<perlre/Backtracking>.
254
255=item backward compatibility
256
257Means you can still run your old program because we didn't break any
258of the features or bugs it was relying on.
259
260=item bareword
261
262A word sufficiently ambiguous to be deemed illegal under L<use strict
263'subs'|strict/strict subs>.  In the absence of that stricture, a
264bareword is treated as if quotes were around it.
265
266=item base class
267
268A generic L</object> type; that is, a L</class> from which other, more
269specific classes are derived genetically by L</inheritance>.  Also
270called a "superclass" by people who respect their ancestors.
271
272=item big-endian
273
274From Swift: someone who eats eggs big end first.  Also used of
275computers that store the most significant L</byte> of a word at a
276lower byte address than the least significant byte.  Often considered
277superior to little-endian machines.  See also L</little-endian>.
278
279=item binary
280
281Having to do with numbers represented in base 2.  That means there's
282basically two numbers, 0 and 1.  Also used to describe a "non-text
283file", presumably because such a file makes full use of all the binary
284bits in its bytes.  With the advent of L</Unicode>, this distinction,
285already suspect, loses even more of its meaning.
286
287=item binary operator
288
289An L</operator> that takes two L<operands|/operand>.
290
291=item bind
292
293To assign a specific L</network address> to a L</socket>.
294
295=item bit
296
297An integer in the range from 0 to 1, inclusive.  The smallest possible
298unit of information storage.  An eighth of a L</byte> or of a dollar.
299(The term "Pieces of Eight" comes from being able to split the old
300Spanish dollar into 8 bits, each of which still counted for money.
301That's why a 25-cent piece today is still "two bits".)
302
303=item bit shift
304
305The movement of bits left or right in a computer word, which has the
306effect of multiplying or dividing by a power of 2.
307
308=item bit string
309
310A sequence of L<bits|/bit> that is actually being thought of as a
311sequence of bits, for once.
312
313=item bless
314
315In corporate life, to grant official approval to a thing, as in, "The
316VP of Engineering has blessed our WebCruncher project." Similarly in
317Perl, to grant official approval to a L</referent> so that it can
318function as an L</object>, such as a WebCruncher object.  See
319L<perlfunc/"bless">.
320
321=item block
322
323What a L</process> does when it has to wait for something: "My process
324blocked waiting for the disk."  As an unrelated noun, it refers to a
325large chunk of data, of a size that the L</operating system> likes to
326deal with (normally a power of two such as 512 or 8192).  Typically
327refers to a chunk of data that's coming from or going to a disk file.
328
329=item BLOCK
330
331A syntactic construct consisting of a sequence of Perl
332L<statements|/statement> that is delimited by braces.  The C<if> and
333C<while> statements are defined in terms of L<BLOCKs|/BLOCK>, for instance.
334Sometimes we also say "block" to mean a lexical scope; that is, a
335sequence of statements that act like a L</BLOCK>, such as within an
336L<eval|perlfunc/eval> or a file, even though the statements aren't
337delimited by braces.
338
339=item block buffering
340
341A method of making input and output efficient by passing one L</block>
342at a time.  By default, Perl does block buffering to disk files.  See
343L</buffer> and L</command buffering>.
344
345=item Boolean
346
347A value that is either L</true> or L</false>.
348
349=item Boolean context
350
351A special kind of L</scalar context> used in conditionals to decide
352whether the L</scalar value> returned by an expression is L</true> or
353L</false>.  Does not evaluate as either a string or a number.  See
354L</context>.
355
356=item breakpoint
357
358A spot in your program where you've told the debugger to stop
359L<execution|/execute> so you can poke around and see whether anything
360is wrong yet.
361
362=item broadcast
363
364To send a L</datagram> to multiple destinations simultaneously.
365
366=item BSD
367
368A psychoactive drug, popular in the 80s, probably developed at
369U. C. Berkeley or thereabouts.  Similar in many ways to the
370prescription-only medication called "System V", but infinitely more
371useful.  (Or, at least, more fun.)  The full chemical name is
372"Berkeley Standard Distribution".
373
374=item bucket
375
376A location in a L</hash table> containing (potentially) multiple
377entries whose keys "hash" to the same hash value according to its hash
378function.  (As internal policy, you don't have to worry about it,
379unless you're into internals, or policy.)
380
381=item buffer
382
383A temporary holding location for data.  L<Block buffering|/block
384buffering> means that the data is passed on to its destination
385whenever the buffer is full.  L<Line buffering|/line buffering> means
386that it's passed on whenever a complete line is received.  L<Command
387buffering|/command buffering> means that it's passed every time you do
388a L<print|perlfunc/print> command (or equivalent).  If your output is
389unbuffered, the system processes it one byte at a time without the use
390of a holding area.  This can be rather inefficient.
391
392=item built-in
393
394A L</function> that is predefined in the language.  Even when hidden
395by L</overriding>, you can always get at a built-in function by
396L<qualifying|/qualified> its name with the C<CORE::> pseudo-package.
397
398=item bundle
399
400A group of related modules on L</CPAN>.  (Also, sometimes refers to a
401group of command-line switches grouped into one L</switch cluster>.)
402
403=item byte
404
405A piece of data worth eight L<bits|/bit> in most places.
406
407=item bytecode
408
409A pidgin-like language spoken among 'droids when they don't wish to
410reveal their orientation (see L</endian>).  Named after some similar
411languages spoken (for similar reasons) between compilers and
412interpreters in the late 20th century.  These languages are
413characterized by representing everything as a
414non-architecture-dependent sequence of bytes.
415
416=back
417
418=head2 C
419
420=over 4
421
422=item C
423
424A language beloved by many for its inside-out L</type> definitions,
425inscrutable L</precedence> rules, and heavy L</overloading> of the
426function-call mechanism.  (Well, actually, people first switched to C
427because they found lowercase identifiers easier to read than upper.)
428Perl is written in C, so it's not surprising that Perl borrowed a few
429ideas from it.
430
431=item C preprocessor
432
433The typical C compiler's first pass, which processes lines beginning
434with C<#> for conditional compilation and macro definition and does
435various manipulations of the program text based on the current
436definitions.  Also known as I<cpp>(1).
437
438=item call by reference
439
440An L</argument>-passing mechanism in which the L</formal arguments>
441refer directly to the L</actual arguments>, and the L</subroutine> can
442change the actual arguments by changing the formal arguments.  That
443is, the formal argument is an L</alias> for the actual argument.  See
444also L</call by value>.
445
446=item call by value
447
448An L</argument>-passing mechanism in which the L</formal arguments>
449refer to a copy of the L</actual arguments>, and the L</subroutine>
450cannot change the actual arguments by changing the formal arguments.
451See also L</call by reference>.
452
453=item callback
454
455A L</handler> that you register with some other part of your program
456in the hope that the other part of your program will L</trigger> your
457handler when some event of interest transpires.
458
459=item canonical
460
461Reduced to a standard form to facilitate comparison.
462
463=item capture buffer, capture group
464
465These two terms are synonymous:
466a L<captured substring|/capturing> by a regex subpattern.
467
468=item capturing
469
470The use of parentheses around a L</subpattern> in a L</regular
471expression> to store the matched L</substring> as a L</backreference>
472or L<capture group|/capture buffer, capture group>.
473(Captured strings are also returned as a list in L</list context>.)
474
475=item character
476
477A small integer representative of a unit of orthography.
478Historically, characters were usually stored as fixed-width integers
479(typically in a byte, or maybe two, depending on the character set),
480but with the advent of UTF-8, characters are often stored in a
481variable number of bytes depending on the size of the integer that
482represents the character.  Perl manages this transparently for you,
483for the most part.
484
485=item character class
486
487A square-bracketed list of characters used in a L</regular expression>
488to indicate that any character of the set may occur at a given point.
489Loosely, any predefined set of characters so used.
490
491=item character property
492
493A predefined L</character class> matchable by the C<\p>
494L</metasymbol>.  Many standard properties are defined for L</Unicode>.
495
496=item circumfix operator
497
498An L</operator> that surrounds its L</operand>, like the angle
499operator, or parentheses, or a hug.
500
501=item class
502
503A user-defined L</type>, implemented in Perl via a L</package> that
504provides (either directly or by inheritance) L<methods|/method> (that
505is, L<subroutines|/subroutine>) to handle L<instances|/instance> of
506the class (its L<objects|/object>).  See also L</inheritance>.
507
508=item class method
509
510A L</method> whose L</invocant> is a L</package> name, not an
511L</object> reference.  A method associated with the class as a whole.
512
513=item client
514
515In networking, a L</process> that initiates contact with a L</server>
516process in order to exchange data and perhaps receive a service.
517
518=item cloister
519
520A L</cluster> used to restrict the scope of a L</regular expression
521modifier>.
522
523=item closure
524
525An L</anonymous> subroutine that, when a reference to it is generated
526at run time, keeps track of the identities of externally visible
527L<lexical variables|/lexical variable> even after those lexical
528variables have supposedly gone out of L</scope>.  They're called
529"closures" because this sort of behavior gives mathematicians a sense
530of closure.
531
532=item cluster
533
534A parenthesized L</subpattern> used to group parts of a L</regular
535expression> into a single L</atom>.
536
537=item CODE
538
539The word returned by the L<ref|perlfunc/ref> function when you apply
540it to a reference to a subroutine.  See also L</CV>.
541
542=item code generator
543
544A system that writes code for you in a low-level language, such as
545code to implement the backend of a compiler.  See L</program
546generator>.
547
548=item code point
549
550The position of a character in a character set encoding.  The character
551C<NULL> is almost certainly at the zeroth position in all character
552sets, so its code point is 0.  The code point for the C<SPACE>
553character in the ASCII character set is 0x20, or 32 decimal; in EBCDIC
554it is 0x40, or 64 decimal.  The L<ord|perlfunc/ord> function returns
555the code point of a character.
556
557"code position" and "ordinal" mean the same thing as "code point".
558
559=item code subpattern
560
561A L</regular expression> subpattern whose real purpose is to execute
562some Perl code, for example, the C<(?{...})> and C<(??{...})>
563subpatterns.
564
565=item collating sequence
566
567The order into which L<characters|/character> sort.  This is used by
568L</string> comparison routines to decide, for example, where in this
569glossary to put "collating sequence".
570
571=item command
572
573In L</shell> programming, the syntactic combination of a program name
574and its arguments.  More loosely, anything you type to a shell (a
575command interpreter) that starts it doing something.  Even more
576loosely, a Perl L</statement>, which might start with a L</label> and
577typically ends with a semicolon.
578
579=item command buffering
580
581A mechanism in Perl that lets you store up the output of each Perl
582L</command> and then flush it out as a single request to the
583L</operating system>.  It's enabled by setting the C<$|>
584(C<$AUTOFLUSH>) variable to a true value.  It's used when you don't
585want data sitting around not going where it's supposed to, which may
586happen because the default on a L</file> or L</pipe> is to use
587L</block buffering>.
588
589=item command name
590
591The name of the program currently executing, as typed on the command
592line.  In C, the L</command> name is passed to the program as the
593first command-line argument.  In Perl, it comes in separately as
594C<$0>.
595
596=item command-line arguments
597
598The L<values|/value> you supply along with a program name when you
599tell a L</shell> to execute a L</command>.  These values are passed to
600a Perl program through C<@ARGV>.
601
602=item comment
603
604A remark that doesn't affect the meaning of the program.  In Perl, a
605comment is introduced by a C<#> character and continues to the end of
606the line.
607
608=item compilation unit
609
610The L</file> (or L</string>, in the case of L<eval|perlfunc/eval>)
611that is currently being compiled.
612
613=item compile phase
614
615Any time before Perl starts running your main program.  See also
616L</run phase>.  Compile phase is mostly spent in L</compile time>, but
617may also be spent in L</run time> when C<BEGIN> blocks,
618L<use|perlfunc/use> declarations, or constant subexpressions are being
619evaluated.  The startup and import code of any L<use|perlfunc/use>
620declaration is also run during compile phase.
621
622=item compile time
623
624The time when Perl is trying to make sense of your code, as opposed to
625when it thinks it knows what your code means and is merely trying to
626do what it thinks your code says to do, which is L</run time>.
627
628=item compiler
629
630Strictly speaking, a program that munches up another program and spits
631out yet another file containing the program in a "more executable"
632form, typically containing native machine instructions.  The I<perl>
633program is not a compiler by this definition, but it does contain a
634kind of compiler that takes a program and turns it into a more
635executable form (L<syntax trees|/syntax tree>) within the I<perl>
636process itself, which the L</interpreter> then interprets.  There are,
637however, extension L<modules|/module> to get Perl to act more like a
638"real" compiler.  See L<O>.
639
640=item composer
641
642A "constructor" for a L</referent> that isn't really an L</object>,
643like an anonymous array or a hash (or a sonata, for that matter).  For
644example, a pair of braces acts as a composer for a hash, and a pair of
645brackets acts as a composer for an array.  See L<perlref/Making
646References>.
647
648=item concatenation
649
650The process of gluing one cat's nose to another cat's tail.  Also, a
651similar operation on two L<strings|/string>.
652
653=item conditional
654
655Something "iffy".  See L</Boolean context>.
656
657=item connection
658
659In telephony, the temporary electrical circuit between the caller's
660and the callee's phone.  In networking, the same kind of temporary
661circuit between a L</client> and a L</server>.
662
663=item construct
664
665As a noun, a piece of syntax made up of smaller pieces.  As a
666transitive verb, to create an L</object> using a L</constructor>.
667
668=item constructor
669
670Any L</class method>, instance L</method>, or L</subroutine>
671that composes, initializes, blesses, and returns an L</object>.
672Sometimes we use the term loosely to mean a L</composer>.
673
674=item context
675
676The surroundings, or environment.  The context given by the
677surrounding code determines what kind of data a particular
678L</expression> is expected to return.  The three primary contexts are
679L</list context>, L</scalar context>, and L</void context>.  Scalar
680context is sometimes subdivided into L</Boolean context>, L</numeric
681context>, L</string context>, and L</void context>.  There's also a
682"don't care" scalar context (which is dealt with in Programming Perl,
683Third Edition, Chapter 2, "Bits and Pieces" if you care).
684
685=item continuation
686
687The treatment of more than one physical L</line> as a single logical
688line.  L</Makefile> lines are continued by putting a backslash before
689the L</newline>.  Mail headers as defined by RFC 822 are continued by
690putting a space or tab I<after> the newline.  In general, lines in
691Perl do not need any form of continuation mark, because L</whitespace>
692(including newlines) is gleefully ignored.  Usually.
693
694=item core dump
695
696The corpse of a L</process>, in the form of a file left in the
697L</working directory> of the process, usually as a result of certain
698kinds of fatal error.
699
700=item CPAN
701
702The Comprehensive Perl Archive Network.  (See L<perlfaq2/What modules and extensions are available for Perl?  What is CPAN?>).
703
704=item cracker
705
706Someone who breaks security on computer systems.  A cracker may be a
707true L</hacker> or only a L</script kiddie>.
708
709=item current package
710
711The L</package> in which the current statement is compiled.  Scan
712backwards in the text of your program through the current L<lexical
713scope|/lexical scoping> or any enclosing lexical scopes till you find
714a package declaration.  That's your current package name.
715
716=item current working directory
717
718See L</working directory>.
719
720=item currently selected output channel
721
722The last L</filehandle> that was designated with
723L<select|perlfunc/select>(C<FILEHANDLE>); L</STDOUT>, if no filehandle
724has been selected.
725
726=item CV
727
728An internal "code value" typedef, holding a L</subroutine>.  The L</CV>
729type is a subclass of L</SV>.
730
731=back
732
733=head2 D
734
735=over 4
736
737=item dangling statement
738
739A bare, single L</statement>, without any braces, hanging off an C<if>
740or C<while> conditional.  C allows them.  Perl doesn't.
741
742=item data structure
743
744How your various pieces of data relate to each other and what shape
745they make when you put them all together, as in a rectangular table or
746a triangular-shaped tree.
747
748=item data type
749
750A set of possible values, together with all the operations that know
751how to deal with those values.  For example, a numeric data type has a
752certain set of numbers that you can work with and various mathematical
753operations that you can do on the numbers but would make little sense
754on, say, a string such as C<"Kilroy">.  Strings have their own
755operations, such as L</concatenation>.  Compound types made of a
756number of smaller pieces generally have operations to compose and
757decompose them, and perhaps to rearrange them.  L<Objects|/object>
758that model things in the real world often have operations that
759correspond to real activities.  For instance, if you model an
760elevator, your elevator object might have an C<open_door()>
761L</method>.
762
763=item datagram
764
765A packet of data, such as a L</UDP> message, that (from the viewpoint
766of the programs involved) can be sent independently over the network.
767(In fact, all packets are sent independently at the L</IP> level, but
768L</stream> protocols such as L</TCP> hide this from your program.)
769
770=item DBM
771
772Stands for "Data Base Management" routines, a set of routines that
773emulate an L</associative array> using disk files.  The routines use a
774dynamic hashing scheme to locate any entry with only two disk
775accesses.  DBM files allow a Perl program to keep a persistent
776L</hash> across multiple invocations.  You can L<tie|perlfunc/tie>
777your hash variables to various DBM implementations--see L<AnyDBM_File>
778and L<DB_File>.
779
780=item declaration
781
782An L</assertion> that states something exists and perhaps describes
783what it's like, without giving any commitment as to how or where
784you'll use it.  A declaration is like the part of your recipe that
785says, "two cups flour, one large egg, four or five tadpoles..."  See
786L</statement> for its opposite.  Note that some declarations also
787function as statements.  Subroutine declarations also act as
788definitions if a body is supplied.
789
790=item decrement
791
792To subtract a value from a variable, as in "decrement C<$x>" (meaning
793to remove 1 from its value) or "decrement C<$x> by 3".
794
795=item default
796
797A L</value> chosen for you if you don't supply a value of your own.
798
799=item defined
800
801Having a meaning.  Perl thinks that some of the things people try to
802do are devoid of meaning, in particular, making use of variables that
803have never been given a L</value> and performing certain operations on
804data that isn't there.  For example, if you try to read data past the
805end of a file, Perl will hand you back an undefined value.  See also
806L</false> and L<perlfunc/defined>.
807
808=item delimiter
809
810A L</character> or L</string> that sets bounds to an arbitrarily-sized
811textual object, not to be confused with a L</separator> or
812L</terminator>.  "To delimit" really just means "to surround" or "to
813enclose" (like these parentheses are doing).
814
815=item deprecated modules and features
816
817Deprecated modules and features are those which were part of a stable
818release, but later found to be subtly flawed, and which should be avoided.
819They are subject to removal and/or bug-incompatible reimplementation in
820the next major release (but they will be preserved through maintenance
821releases).  Deprecation warnings are issued under B<-w> or C<use
822diagnostics>, and notices are found in L<perldelta>s, as well as various
823other PODs. Coding practices that misuse features, such as C<my $foo if
8240>, can also be deprecated.
825
826=item dereference
827
828A fancy computer science term meaning "to follow a L</reference> to
829what it points to".  The "de" part of it refers to the fact that
830you're taking away one level of L</indirection>.
831
832=item derived class
833
834A L</class> that defines some of its L<methods|/method> in terms of a
835more generic class, called a L</base class>.  Note that classes aren't
836classified exclusively into base classes or derived classes: a class
837can function as both a derived class and a base class simultaneously,
838which is kind of classy.
839
840=item descriptor
841
842See L</file descriptor>.
843
844=item destroy
845
846To deallocate the memory of a L</referent> (first triggering its
847C<DESTROY> method, if it has one).
848
849=item destructor
850
851A special L</method> that is called when an L</object> is thinking
852about L<destroying|/destroy> itself.  A Perl program's C<DESTROY>
853method doesn't do the actual destruction; Perl just
854L<triggers|/trigger> the method in case the L</class> wants to do any
855associated cleanup.
856
857=item device
858
859A whiz-bang hardware gizmo (like a disk or tape drive or a modem or a
860joystick or a mouse) attached to your computer, that the L</operating
861system> tries to make look like a L</file> (or a bunch of files).
862Under Unix, these fake files tend to live in the I</dev> directory.
863
864=item directive
865
866A L</pod> directive.  See L<perlpod>.
867
868=item directory
869
870A special file that contains other files.  Some L<operating
871systems|/operating system> call these "folders", "drawers", or
872"catalogs".
873
874=item directory handle
875
876A name that represents a particular instance of opening a directory to
877read it, until you close it.  See the L<opendir|perlfunc/opendir>
878function.
879
880=item dispatch
881
882To send something to its correct destination.  Often used
883metaphorically to indicate a transfer of programmatic control to a
884destination selected algorithmically, often by lookup in a table of
885function L<references|/reference> or, in the case of object
886L<methods|/method>, by traversing the inheritance tree looking for the
887most specific definition for the method.
888
889=item distribution
890
891A standard, bundled release of a system of software.  The default
892usage implies source code is included.  If that is not the case, it
893will be called a "binary-only" distribution.
894
895=item (to be) dropped modules
896
897When Perl 5 was first released (see L<perlhist>), several modules were
898included, which have now fallen out of common use.  It has been suggested
899that these modules should be removed, since the distribution became rather
900large, and the common criterion for new module additions is now limited to
901modules that help to build, test, and extend perl itself.  Furthermore,
902the CPAN (which didn't exist at the time of Perl 5.0) can become the new
903home of dropped modules. Dropping modules is currently not an option, but
904further developments may clear the last barriers.
905
906=item dweomer
907
908An enchantment, illusion, phantasm, or jugglery.  Said when Perl's
909magical L</dwimmer> effects don't do what you expect, but rather seem
910to be the product of arcane dweomercraft, sorcery, or wonder working.
911[From Old English]
912
913=item dwimmer
914
915DWIM is an acronym for "Do What I Mean", the principle that something
916should just do what you want it to do without an undue amount of fuss.
917A bit of code that does "dwimming" is a "dwimmer".  Dwimming can
918require a great deal of behind-the-scenes magic, which (if it doesn't
919stay properly behind the scenes) is called a L</dweomer> instead.
920
921=item dynamic scoping
922
923Dynamic scoping works over a dynamic scope, making variables visible
924throughout the rest of the L</block> in which they are first used and
925in any L<subroutines|/subroutine> that are called by the rest of the
926block.  Dynamically scoped variables can have their values temporarily
927changed (and implicitly restored later) by a L<local|perlfunc/local>
928operator.  (Compare L</lexical scoping>.)  Used more loosely to mean
929how a subroutine that is in the middle of calling another subroutine
930"contains" that subroutine at L</run time>.
931
932=back
933
934=head2 E
935
936=over 4
937
938=item eclectic
939
940Derived from many sources.  Some would say I<too> many.
941
942=item element
943
944A basic building block.  When you're talking about an L</array>, it's
945one of the items that make up the array.
946
947=item embedding
948
949When something is contained in something else, particularly when that
950might be considered surprising: "I've embedded a complete Perl
951interpreter in my editor!"
952
953=item empty list
954
955See </null list>.
956
957=item empty subclass test
958
959The notion that an empty L</derived class> should behave exactly like
960its L</base class>.
961
962=item en passant
963
964When you change a L</value> as it is being copied.  [From French, "in
965passing", as in the exotic pawn-capturing maneuver in chess.]
966
967=item encapsulation
968
969The veil of abstraction separating the L</interface> from the
970L</implementation> (whether enforced or not), which mandates that all
971access to an L</object>'s state be through L<methods|/method> alone.
972
973=item endian
974
975See L</little-endian> and L</big-endian>.
976
977=item environment
978
979The collective set of L<environment variables|/environment variable>
980your L</process> inherits from its parent.  Accessed via C<%ENV>.
981
982=item environment variable
983
984A mechanism by which some high-level agent such as a user can pass its
985preferences down to its future offspring (child L<processes|/process>,
986grandchild processes, great-grandchild processes, and so on).  Each
987environment variable is a L</key>/L</value> pair, like one entry in a
988L</hash>.
989
990=item EOF
991
992End of File.  Sometimes used metaphorically as the terminating string
993of a L</here document>.
994
995=item errno
996
997The error number returned by a L</syscall> when it fails.  Perl refers
998to the error by the name C<$!> (or C<$OS_ERROR> if you use the English
999module).
1000
1001=item error
1002
1003See L</exception> or L</fatal error>.
1004
1005=item escape sequence
1006
1007See L</metasymbol>.
1008
1009=item exception
1010
1011A fancy term for an error.  See L</fatal error>.
1012
1013=item exception handling
1014
1015The way a program responds to an error.  The exception handling
1016mechanism in Perl is the L<eval|perlfunc/eval> operator.
1017
1018=item exec
1019
1020To throw away the current L</process>'s program and replace it with
1021another without exiting the process or relinquishing any resources
1022held (apart from the old memory image).
1023
1024=item executable file
1025
1026A L</file> that is specially marked to tell the L</operating system>
1027that it's okay to run this file as a program.  Usually shortened to
1028"executable".
1029
1030=item execute
1031
1032To run a L<program|/executable file> or L</subroutine>.  (Has nothing
1033to do with the L<kill|perlfunc/kill> built-in, unless you're trying to
1034run a L</signal handler>.)
1035
1036=item execute bit
1037
1038The special mark that tells the operating system it can run this
1039program.  There are actually three execute bits under Unix, and which
1040bit gets used depends on whether you own the file singularly,
1041collectively, or not at all.
1042
1043=item exit status
1044
1045See L</status>.
1046
1047=item export
1048
1049To make symbols from a L</module> available for L</import> by other modules.
1050
1051=item expression
1052
1053Anything you can legally say in a spot where a L</value> is required.
1054Typically composed of L<literals|/literal>, L<variables|/variable>,
1055L<operators|/operator>, L<functions|/function>, and L</subroutine>
1056calls, not necessarily in that order.
1057
1058=item extension
1059
1060A Perl module that also pulls in compiled C or C++ code.  More
1061generally, any experimental option that can be compiled into Perl,
1062such as multithreading.
1063
1064=back
1065
1066=head2 F
1067
1068=over 4
1069
1070=item false
1071
1072In Perl, any value that would look like C<""> or C<"0"> if evaluated
1073in a string context.  Since undefined values evaluate to C<"">, all
1074undefined values are false (including the L</null list>), but not all
1075false values are undefined.
1076
1077=item FAQ
1078
1079Frequently Asked Question (although not necessarily frequently
1080answered, especially if the answer appears in the Perl FAQ shipped
1081standard with Perl).
1082
1083=item fatal error
1084
1085An uncaught L</exception>, which causes termination of the L</process>
1086after printing a message on your L</standard error> stream.  Errors
1087that happen inside an L<eval|perlfunc/eval> are not fatal.  Instead,
1088the L<eval|perlfunc/eval> terminates after placing the exception
1089message in the C<$@> (C<$EVAL_ERROR>) variable.  You can try to
1090provoke a fatal error with the L<die|perlfunc/die> operator (known as
1091throwing or raising an exception), but this may be caught by a
1092dynamically enclosing L<eval|perlfunc/eval>.  If not caught, the
1093L<die|perlfunc/die> becomes a fatal error.
1094
1095=item field
1096
1097A single piece of numeric or string data that is part of a longer
1098L</string>, L</record>, or L</line>.  Variable-width fields are usually
1099split up by L<separators|/separator> (so use L<split|perlfunc/split> to
1100extract the fields), while fixed-width fields are usually at fixed
1101positions (so use L<unpack|perlfunc/unpack>).  L<Instance
1102variables|/instance variable> are also known as fields.
1103
1104=item FIFO
1105
1106First In, First Out.  See also L</LIFO>.  Also, a nickname for a
1107L</named pipe>.
1108
1109=item file
1110
1111A named collection of data, usually stored on disk in a L</directory>
1112in a L</filesystem>.  Roughly like a document, if you're into office
1113metaphors.  In modern filesystems, you can actually give a file more
1114than one name.  Some files have special properties, like directories
1115and devices.
1116
1117=item file descriptor
1118
1119The little number the L</operating system> uses to keep track of which
1120opened L</file> you're talking about.  Perl hides the file descriptor
1121inside a L</standard IE<sol>O> stream and then attaches the stream to
1122a L</filehandle>.
1123
1124=item file test operator
1125
1126A built-in unary operator that you use to determine whether something
1127is L</true> about a file, such as C<-o $filename> to test whether
1128you're the owner of the file.
1129
1130=item fileglob
1131
1132A "wildcard" match on L<filenames|/filename>.  See the
1133L<glob|perlfunc/glob> function.
1134
1135=item filehandle
1136
1137An identifier (not necessarily related to the real name of a file)
1138that represents a particular instance of opening a file until you
1139close it.  If you're going to open and close several different files
1140in succession, it's fine to open each of them with the same
1141filehandle, so you don't have to write out separate code to process
1142each file.
1143
1144=item filename
1145
1146One name for a file.  This name is listed in a L</directory>, and you
1147can use it in an L<open|perlfunc/open> to tell the L</operating
1148system> exactly which file you want to open, and associate the file
1149with a L</filehandle> which will carry the subsequent identity of that
1150file in your program, until you close it.
1151
1152=item filesystem
1153
1154A set of L<directories|/directory> and L<files|/file> residing on a
1155partition of the disk.  Sometimes known as a "partition".  You can
1156change the file's name or even move a file around from directory to
1157directory within a filesystem without actually moving the file itself,
1158at least under Unix.
1159
1160=item filter
1161
1162A program designed to take a L</stream> of input and transform it into
1163a stream of output.
1164
1165=item flag
1166
1167We tend to avoid this term because it means so many things.  It may
1168mean a command-line L</switch> that takes no argument
1169itself (such as Perl's B<-n> and B<-p>
1170flags) or, less frequently, a single-bit indicator (such as the
1171C<O_CREAT> and C<O_EXCL> flags used in
1172L<sysopen|perlfunc/sysopen>).
1173
1174=item floating point
1175
1176A method of storing numbers in "scientific notation", such that the
1177precision of the number is independent of its magnitude (the decimal
1178point "floats").  Perl does its numeric work with floating-point
1179numbers (sometimes called "floats"), when it can't get away with
1180using L<integers|/integer>.  Floating-point numbers are mere
1181approximations of real numbers.
1182
1183=item flush
1184
1185The act of emptying a L</buffer>, often before it's full.
1186
1187=item FMTEYEWTK
1188
1189Far More Than Everything You Ever Wanted To Know.  An exhaustive
1190treatise on one narrow topic, something of a super-L</FAQ>.  See Tom
1191for far more.
1192
1193=item fork
1194
1195To create a child L</process> identical to the parent process at its
1196moment of conception, at least until it gets ideas of its own.  A
1197thread with protected memory.
1198
1199=item formal arguments
1200
1201The generic names by which a L</subroutine> knows its
1202L<arguments|/argument>.  In many languages, formal arguments are
1203always given individual names, but in Perl, the formal arguments are
1204just the elements of an array.  The formal arguments to a Perl program
1205are C<$ARGV[0]>, C<$ARGV[1]>, and so on.  Similarly, the formal
1206arguments to a Perl subroutine are C<$_[0]>, C<$_[1]>, and so on.  You
1207may give the arguments individual names by assigning the values to a
1208L<my|perlfunc/my> list.  See also L</actual arguments>.
1209
1210=item format
1211
1212A specification of how many spaces and digits and things to put
1213somewhere so that whatever you're printing comes out nice and pretty.
1214
1215=item freely available
1216
1217Means you don't have to pay money to get it, but the copyright on it
1218may still belong to someone else (like Larry).
1219
1220=item freely redistributable
1221
1222Means you're not in legal trouble if you give a bootleg copy of it to
1223your friends and we find out about it.  In fact, we'd rather you gave
1224a copy to all your friends.
1225
1226=item freeware
1227
1228Historically, any software that you give away, particularly if you
1229make the source code available as well.  Now often called C<open
1230source software>.  Recently there has been a trend to use the term in
1231contradistinction to L</open source software>, to refer only to free
1232software released under the Free Software Foundation's GPL (General
1233Public License), but this is difficult to justify etymologically.
1234
1235=item function
1236
1237Mathematically, a mapping of each of a set of input values to a
1238particular output value.  In computers, refers to a L</subroutine> or
1239L</operator> that returns a L</value>.  It may or may not have input
1240values (called L<arguments|/argument>).
1241
1242=item funny character
1243
1244Someone like Larry, or one of his peculiar friends.  Also refers to
1245the strange prefixes that Perl requires as noun markers on its
1246variables.
1247
1248=back
1249
1250=head2 G
1251
1252=over 4
1253
1254=item garbage collection
1255
1256A misnamed feature--it should be called, "expecting your mother to
1257pick up after you".  Strictly speaking, Perl doesn't do this, but it
1258relies on a reference-counting mechanism to keep things tidy.
1259However, we rarely speak strictly and will often refer to the
1260reference-counting scheme as a form of garbage collection.  (If it's
1261any comfort, when your interpreter exits, a "real" garbage collector
1262runs to make sure everything is cleaned up if you've been messy with
1263circular references and such.)
1264
1265=item GID
1266
1267Group ID--in Unix, the numeric group ID that the L</operating system>
1268uses to identify you and members of your L</group>.
1269
1270=item glob
1271
1272Strictly, the shell's C<*> character, which will match a "glob" of
1273characters when you're trying to generate a list of filenames.
1274Loosely, the act of using globs and similar symbols to do pattern
1275matching.  See also L</fileglob> and L</typeglob>.
1276
1277=item global
1278
1279Something you can see from anywhere, usually used of
1280L<variables|/variable> and L<subroutines|/subroutine> that are visible
1281everywhere in your program.  In Perl, only certain special variables
1282are truly global--most variables (and all subroutines) exist only in
1283the current L</package>.  Global variables can be declared with
1284L<our|perlfunc/our>.  See L<perlfunc/our>.
1285
1286=item global destruction
1287
1288The L</garbage collection> of globals (and the running of any
1289associated object destructors) that takes place when a Perl
1290L</interpreter> is being shut down.  Global destruction should not be
1291confused with the Apocalypse, except perhaps when it should.
1292
1293=item glue language
1294
1295A language such as Perl that is good at hooking things together that
1296weren't intended to be hooked together.
1297
1298=item granularity
1299
1300The size of the pieces you're dealing with, mentally speaking.
1301
1302=item greedy
1303
1304A L</subpattern> whose L</quantifier> wants to match as many things as
1305possible.
1306
1307=item grep
1308
1309Originally from the old Unix editor command for "Globally search for a
1310Regular Expression and Print it", now used in the general sense of any
1311kind of search, especially text searches.  Perl has a built-in
1312L<grep|perlfunc/grep> function that searches a list for elements
1313matching any given criterion, whereas the I<grep>(1) program searches
1314for lines matching a L</regular expression> in one or more files.
1315
1316=item group
1317
1318A set of users of which you are a member.  In some operating systems
1319(like Unix), you can give certain file access permissions to other
1320members of your group.
1321
1322=item GV
1323
1324An internal "glob value" typedef, holding a L</typeglob>.  The L</GV>
1325type is a subclass of L</SV>.
1326
1327=back
1328
1329=head2 H
1330
1331=over 4
1332
1333=item hacker
1334
1335Someone who is brilliantly persistent in solving technical problems,
1336whether these involve golfing, fighting orcs, or programming.  Hacker
1337is a neutral term, morally speaking.  Good hackers are not to be
1338confused with evil L<crackers|/cracker> or clueless L<script
1339kiddies|/script kiddie>.  If you confuse them, we will presume that
1340you are either evil or clueless.
1341
1342=item handler
1343
1344A L</subroutine> or L</method> that is called by Perl when your
1345program needs to respond to some internal event, such as a L</signal>,
1346or an encounter with an operator subject to L</operator overloading>.
1347See also L</callback>.
1348
1349=item hard reference
1350
1351A L</scalar> L</value> containing the actual address of a
1352L</referent>, such that the referent's L</reference> count accounts
1353for it.  (Some hard references are held internally, such as the
1354implicit reference from one of a L</typeglob>'s variable slots to its
1355corresponding referent.)  A hard reference is different from a
1356L</symbolic reference>.
1357
1358=item hash
1359
1360An unordered association of L</key>/L</value> pairs, stored such that
1361you can easily use a string L</key> to look up its associated data
1362L</value>.  This glossary is like a hash, where the word to be defined
1363is the key, and the definition is the value.  A hash is also sometimes
1364septisyllabically called an "associative array", which is a pretty
1365good reason for simply calling it a "hash" instead. A hash can optionally
1366be L<restricted|/restricted hash> to a fixed set of keys.
1367
1368=item hash table
1369
1370A data structure used internally by Perl for implementing associative
1371arrays (hashes) efficiently.  See also L</bucket>.
1372
1373=item header file
1374
1375A file containing certain required definitions that you must include
1376"ahead" of the rest of your program to do certain obscure operations.
1377A C header file has a I<.h> extension.  Perl doesn't really have
1378header files, though historically Perl has sometimes used translated
1379I<.h> files with a I<.ph> extension.  See L<perlfunc/require>.
1380(Header files have been superseded by the L</module> mechanism.)
1381
1382=item here document
1383
1384So called because of a similar construct in L<shells|/shell> that
1385pretends that the L<lines|/line> following the L</command> are a
1386separate L</file> to be fed to the command, up to some terminating
1387string.  In Perl, however, it's just a fancy form of quoting.
1388
1389=item hexadecimal
1390
1391A number in base 16, "hex" for short.  The digits for 10 through 16
1392are customarily represented by the letters C<a> through C<f>.
1393Hexadecimal constants in Perl start with C<0x>.  See also
1394L<perlfunc/hex>.
1395
1396=item home directory
1397
1398The directory you are put into when you log in.  On a Unix system, the
1399name is often placed into C<$ENV{HOME}> or C<$ENV{LOGDIR}> by
1400I<login>, but you can also find it with C<(getpwuid($E<lt>))[7]>.
1401(Some platforms do not have a concept of a home directory.)
1402
1403=item host
1404
1405The computer on which a program or other data resides.
1406
1407=item hubris
1408
1409Excessive pride, the sort of thing Zeus zaps you for.  Also the
1410quality that makes you write (and maintain) programs that other people
1411won't want to say bad things about.  Hence, the third great virtue of
1412a programmer.  See also L</laziness> and L</impatience>.
1413
1414=item HV
1415
1416Short for a "hash value" typedef, which holds Perl's internal
1417representation of a hash.  The L</HV> type is a subclass of L</SV>.
1418
1419=back
1420
1421=head2 I
1422
1423=over 4
1424
1425=item identifier
1426
1427A legally formed name for most anything in which a computer program
1428might be interested.  Many languages (including Perl) allow
1429identifiers that start with a letter and contain letters and digits.
1430Perl also counts the underscore character as a valid letter.  (Perl
1431also has more complicated names, such as L</qualified> names.)
1432
1433=item impatience
1434
1435The anger you feel when the computer is being lazy.  This makes you
1436write programs that don't just react to your needs, but actually
1437anticipate them.  Or at least that pretend to.  Hence, the second
1438great virtue of a programmer.  See also L</laziness> and L</hubris>.
1439
1440=item implementation
1441
1442How a piece of code actually goes about doing its job.  Users of the
1443code should not count on implementation details staying the same
1444unless they are part of the published L</interface>.
1445
1446=item import
1447
1448To gain access to symbols that are exported from another module.  See
1449L<perlfunc/use>.
1450
1451=item increment
1452
1453To increase the value of something by 1 (or by some other number, if
1454so specified).
1455
1456=item indexing
1457
1458In olden days, the act of looking up a L</key> in an actual index
1459(such as a phone book), but now merely the act of using any kind of
1460key or position to find the corresponding L</value>, even if no index
1461is involved.  Things have degenerated to the point that Perl's
1462L<index|perlfunc/index> function merely locates the position (index)
1463of one string in another.
1464
1465=item indirect filehandle
1466
1467An L</expression> that evaluates to something that can be used as a
1468L</filehandle>: a L</string> (filehandle name), a L</typeglob>, a
1469typeglob L</reference>, or a low-level L</IO> object.
1470
1471=item indirect object
1472
1473In English grammar, a short noun phrase between a verb and its direct
1474object indicating the beneficiary or recipient of the action.  In
1475Perl, C<print STDOUT "$foo\n";> can be understood as "verb
1476indirect-object object" where L</STDOUT> is the recipient of the
1477L<print|perlfunc/print> action, and C<"$foo"> is the object being
1478printed.  Similarly, when invoking a L</method>, you might place the
1479invocant between the method and its arguments:
1480
1481  $gollum = new Pathetic::Creature "Smeagol";
1482  give $gollum "Fisssssh!";
1483  give $gollum "Precious!";
1484
1485In modern Perl, calling methods this way is often considered bad practice and
1486to be avoided.
1487
1488=item indirect object slot
1489
1490The syntactic position falling between a method call and its arguments
1491when using the indirect object invocation syntax.  (The slot is
1492distinguished by the absence of a comma between it and the next
1493argument.) L</STDERR> is in the indirect object slot here:
1494
1495  print STDERR "Awake!  Awake!  Fear, Fire,
1496      Foes!  Awake!\n";
1497
1498=item indirection
1499
1500If something in a program isn't the value you're looking for but
1501indicates where the value is, that's indirection.  This can be done
1502with either L<symbolic references|/symbolic reference> or L<hard
1503references|/hard reference>.
1504
1505=item infix
1506
1507An L</operator> that comes in between its L<operands|/operand>, such
1508as multiplication in C<24 * 7>.
1509
1510=item inheritance
1511
1512What you get from your ancestors, genetically or otherwise.  If you
1513happen to be a L</class>, your ancestors are called L<base
1514classes|/base class> and your descendants are called L<derived
1515classes|/derived class>.  See L</single inheritance> and L</multiple
1516inheritance>.
1517
1518=item instance
1519
1520Short for "an instance of a class", meaning an L</object> of that L</class>.
1521
1522=item instance variable
1523
1524An L</attribute> of an L</object>; data stored with the particular
1525object rather than with the class as a whole.
1526
1527=item integer
1528
1529A number with no fractional (decimal) part.  A counting number, like
15301, 2, 3, and so on, but including 0 and the negatives.
1531
1532=item interface
1533
1534The services a piece of code promises to provide forever, in contrast to
1535its L</implementation>, which it should feel free to change whenever it
1536likes.
1537
1538=item interpolation
1539
1540The insertion of a scalar or list value somewhere in the middle of
1541another value, such that it appears to have been there all along.  In
1542Perl, variable interpolation happens in double-quoted strings and
1543patterns, and list interpolation occurs when constructing the list of
1544values to pass to a list operator or other such construct that takes a
1545L</LIST>.
1546
1547=item interpreter
1548
1549Strictly speaking, a program that reads a second program and does what
1550the second program says directly without turning the program into a
1551different form first, which is what L<compilers|/compiler> do.  Perl
1552is not an interpreter by this definition, because it contains a kind
1553of compiler that takes a program and turns it into a more executable
1554form (L<syntax trees|/syntax tree>) within the I<perl> process itself,
1555which the Perl L</run time> system then interprets.
1556
1557=item invocant
1558
1559The agent on whose behalf a L</method> is invoked.  In a L</class>
1560method, the invocant is a package name.  In an L</instance> method,
1561the invocant is an object reference.
1562
1563=item invocation
1564
1565The act of calling up a deity, daemon, program, method, subroutine, or
1566function to get it do what you think it's supposed to do.  We usually
1567"call" subroutines but "invoke" methods, since it sounds cooler.
1568
1569=item I/O
1570
1571Input from, or output to, a L</file> or L</device>.
1572
1573=item IO
1574
1575An internal I/O object.  Can also mean L</indirect object>.
1576
1577=item IP
1578
1579Internet Protocol, or Intellectual Property.
1580
1581=item IPC
1582
1583Interprocess Communication.
1584
1585=item is-a
1586
1587A relationship between two L<objects|/object> in which one object is
1588considered to be a more specific version of the other, generic object:
1589"A camel is a mammal."  Since the generic object really only exists in
1590a Platonic sense, we usually add a little abstraction to the notion of
1591objects and think of the relationship as being between a generic
1592L</base class> and a specific L</derived class>.  Oddly enough,
1593Platonic classes don't always have Platonic relationships--see
1594L</inheritance>.
1595
1596=item iteration
1597
1598Doing something repeatedly.
1599
1600=item iterator
1601
1602A special programming gizmo that keeps track of where you are in
1603something that you're trying to iterate over.  The C<foreach> loop in
1604Perl contains an iterator; so does a hash, allowing you to
1605L<each|perlfunc/each> through it.
1606
1607=item IV
1608
1609The integer four, not to be confused with six, Tom's favorite editor.
1610IV also means an internal Integer Value of the type a L</scalar> can
1611hold, not to be confused with an L</NV>.
1612
1613=back
1614
1615=head2 J
1616
1617=over 4
1618
1619=item JAPH
1620
1621"Just Another Perl Hacker," a clever but cryptic bit of Perl code that
1622when executed, evaluates to that string.  Often used to illustrate a
1623particular Perl feature, and something of an ongoing Obfuscated Perl
1624Contest seen in Usenix signatures.
1625
1626=back
1627
1628=head2 K
1629
1630=over 4
1631
1632=item key
1633
1634The string index to a L</hash>, used to look up the L</value>
1635associated with that key.
1636
1637=item keyword
1638
1639See L</reserved words>.
1640
1641=back
1642
1643=head2 L
1644
1645=over 4
1646
1647=item label
1648
1649A name you give to a L</statement> so that you can talk about that
1650statement elsewhere in the program.
1651
1652=item laziness
1653
1654The quality that makes you go to great effort to reduce overall energy
1655expenditure.  It makes you write labor-saving programs that other
1656people will find useful, and document what you wrote so you don't have
1657to answer so many questions about it.  Hence, the first great virtue
1658of a programmer.  Also hence, this book.  See also L</impatience> and
1659L</hubris>.
1660
1661=item left shift
1662
1663A L</bit shift> that multiplies the number by some power of 2.
1664
1665=item leftmost longest
1666
1667The preference of the L</regular expression> engine to match the
1668leftmost occurrence of a L</pattern>, then given a position at which a
1669match will occur, the preference for the longest match (presuming the
1670use of a L</greedy> quantifier).  See L<perlre> for I<much> more on
1671this subject.
1672
1673=item lexeme
1674
1675Fancy term for a L</token>.
1676
1677=item lexer
1678
1679Fancy term for a L</tokener>.
1680
1681=item lexical analysis
1682
1683Fancy term for L</tokenizing>.
1684
1685=item lexical scoping
1686
1687Looking at your I<Oxford English Dictionary> through a microscope.
1688(Also known as L</static scoping>, because dictionaries don't change
1689very fast.)  Similarly, looking at variables stored in a private
1690dictionary (namespace) for each scope, which are visible only from
1691their point of declaration down to the end of the lexical scope in
1692which they are declared.  --Syn. L</static scoping>.
1693--Ant. L</dynamic scoping>.
1694
1695=item lexical variable
1696
1697A L</variable> subject to L</lexical scoping>, declared by
1698L<my|perlfunc/my>.  Often just called a "lexical".  (The
1699L<our|perlfunc/our> declaration declares a lexically scoped name for a
1700global variable, which is not itself a lexical variable.)
1701
1702=item library
1703
1704Generally, a collection of procedures.  In ancient days, referred to a
1705collection of subroutines in a I<.pl> file.  In modern times, refers
1706more often to the entire collection of Perl L<modules|/module> on your
1707system.
1708
1709=item LIFO
1710
1711Last In, First Out.  See also L</FIFO>.  A LIFO is usually called a
1712L</stack>.
1713
1714=item line
1715
1716In Unix, a sequence of zero or more non-newline characters terminated
1717with a L</newline> character.  On non-Unix machines, this is emulated
1718by the C library even if the underlying L</operating system> has
1719different ideas.
1720
1721=item line buffering
1722
1723Used by a L</standard IE<sol>O> output stream that flushes its
1724L</buffer> after every L</newline>.  Many standard I/O libraries
1725automatically set up line buffering on output that is going to the
1726terminal.
1727
1728=item line number
1729
1730The number of lines read previous to this one, plus 1.  Perl keeps a
1731separate line number for each source or input file it opens.  The
1732current source file's line number is represented by C<__LINE__>.  The
1733current input line number (for the file that was most recently read
1734via C<< E<lt>FHE<gt> >>) is represented by the C<$.>
1735(C<$INPUT_LINE_NUMBER>) variable.  Many error messages report both
1736values, if available.
1737
1738=item link
1739
1740Used as a noun, a name in a L</directory>, representing a L</file>.  A
1741given file can have multiple links to it.  It's like having the same
1742phone number listed in the phone directory under different names.  As
1743a verb, to resolve a partially compiled file's unresolved symbols into
1744a (nearly) executable image.  Linking can generally be static or
1745dynamic, which has nothing to do with static or dynamic scoping.
1746
1747=item LIST
1748
1749A syntactic construct representing a comma-separated list of
1750expressions, evaluated to produce a L</list value>.  Each
1751L</expression> in a L</LIST> is evaluated in L</list context> and
1752interpolated into the list value.
1753
1754=item list
1755
1756An ordered set of scalar values.
1757
1758=item list context
1759
1760The situation in which an L</expression> is expected by its
1761surroundings (the code calling it) to return a list of values rather
1762than a single value.  Functions that want a L</LIST> of arguments tell
1763those arguments that they should produce a list value.  See also
1764L</context>.
1765
1766=item list operator
1767
1768An L</operator> that does something with a list of values, such as
1769L<join|perlfunc/join> or L<grep|perlfunc/grep>.  Usually used for
1770named built-in operators (such as L<print|perlfunc/print>,
1771L<unlink|perlfunc/unlink>, and L<system|perlfunc/system>) that do not
1772require parentheses around their L</argument> list.
1773
1774=item list value
1775
1776An unnamed list of temporary scalar values that may be passed around
1777within a program from any list-generating function to any function or
1778construct that provides a L</list context>.
1779
1780=item literal
1781
1782A token in a programming language such as a number or L</string> that
1783gives you an actual L</value> instead of merely representing possible
1784values as a L</variable> does.
1785
1786=item little-endian
1787
1788From Swift: someone who eats eggs little end first.  Also used of
1789computers that store the least significant L</byte> of a word at a
1790lower byte address than the most significant byte.  Often considered
1791superior to big-endian machines.  See also L</big-endian>.
1792
1793=item local
1794
1795Not meaning the same thing everywhere.  A global variable in Perl can
1796be localized inside a L<dynamic scope|/dynamic scoping> via the
1797L<local|perlfunc/local> operator.
1798
1799=item logical operator
1800
1801Symbols representing the concepts "and", "or", "xor", and "not".
1802
1803=item lookahead
1804
1805An L</assertion> that peeks at the string to the right of the current
1806match location.
1807
1808=item lookbehind
1809
1810An L</assertion> that peeks at the string to the left of the current
1811match location.
1812
1813=item loop
1814
1815A construct that performs something repeatedly, like a roller coaster.
1816
1817=item loop control statement
1818
1819Any statement within the body of a loop that can make a loop
1820prematurely stop looping or skip an L</iteration>.  Generally you
1821shouldn't try this on roller coasters.
1822
1823=item loop label
1824
1825A kind of key or name attached to a loop (or roller coaster) so that
1826loop control statements can talk about which loop they want to
1827control.
1828
1829=item lvaluable
1830
1831Able to serve as an L</lvalue>.
1832
1833=item lvalue
1834
1835Term used by language lawyers for a storage location you can assign a
1836new L</value> to, such as a L</variable> or an element of an
1837L</array>.  The "l" is short for "left", as in the left side of an
1838assignment, a typical place for lvalues.  An L</lvaluable> function or
1839expression is one to which a value may be assigned, as in C<pos($x) =
184010>.
1841
1842=item lvalue modifier
1843
1844An adjectival pseudofunction that warps the meaning of an L</lvalue>
1845in some declarative fashion.  Currently there are three lvalue
1846modifiers: L<my|perlfunc/my>, L<our|perlfunc/our>, and
1847L<local|perlfunc/local>.
1848
1849=back
1850
1851=head2 M
1852
1853=over 4
1854
1855=item magic
1856
1857Technically speaking, any extra semantics attached to a variable such
1858as C<$!>, C<$0>, C<%ENV>, or C<%SIG>, or to any tied variable.
1859Magical things happen when you diddle those variables.
1860
1861=item magical increment
1862
1863An L</increment> operator that knows how to bump up alphabetics as
1864well as numbers.
1865
1866=item magical variables
1867
1868Special variables that have side effects when you access them or
1869assign to them.  For example, in Perl, changing elements of the
1870C<%ENV> array also changes the corresponding environment variables
1871that subprocesses will use.  Reading the C<$!> variable gives you the
1872current system error number or message.
1873
1874=item Makefile
1875
1876A file that controls the compilation of a program.  Perl programs
1877don't usually need a L</Makefile> because the Perl compiler has plenty
1878of self-control.
1879
1880=item man
1881
1882The Unix program that displays online documentation (manual pages) for
1883you.
1884
1885=item manpage
1886
1887A "page" from the manuals, typically accessed via the I<man>(1)
1888command.  A manpage contains a SYNOPSIS, a DESCRIPTION, a list of
1889BUGS, and so on, and is typically longer than a page.  There are
1890manpages documenting L<commands|/command>, L<syscalls|/syscall>,
1891L</library> L<functions|/function>, L<devices|/device>,
1892L<protocols|/protocol>, L<files|/file>, and such.  In this book, we
1893call any piece of standard Perl documentation (like I<perlop> or
1894I<perldelta>) a manpage, no matter what format it's installed in on
1895your system.
1896
1897=item matching
1898
1899See L</pattern matching>.
1900
1901=item member data
1902
1903See L</instance variable>.
1904
1905=item memory
1906
1907This always means your main memory, not your disk.  Clouding the issue
1908is the fact that your machine may implement L</virtual> memory; that
1909is, it will pretend that it has more memory than it really does, and
1910it'll use disk space to hold inactive bits.  This can make it seem
1911like you have a little more memory than you really do, but it's not a
1912substitute for real memory.  The best thing that can be said about
1913virtual memory is that it lets your performance degrade gradually
1914rather than suddenly when you run out of real memory.  But your
1915program can die when you run out of virtual memory too, if you haven't
1916thrashed your disk to death first.
1917
1918=item metacharacter
1919
1920A L</character> that is I<not> supposed to be treated normally.  Which
1921characters are to be treated specially as metacharacters varies
1922greatly from context to context.  Your L</shell> will have certain
1923metacharacters, double-quoted Perl L<strings|/string> have other
1924metacharacters, and L</regular expression> patterns have all the
1925double-quote metacharacters plus some extra ones of their own.
1926
1927=item metasymbol
1928
1929Something we'd call a L</metacharacter> except that it's a sequence of
1930more than one character.  Generally, the first character in the
1931sequence must be a true metacharacter to get the other characters in
1932the metasymbol to misbehave along with it.
1933
1934=item method
1935
1936A kind of action that an L</object> can take if you tell it to.  See
1937L<perlobj>.
1938
1939=item minimalism
1940
1941The belief that "small is beautiful."  Paradoxically, if you say
1942something in a small language, it turns out big, and if you say it in
1943a big language, it turns out small.  Go figure.
1944
1945=item mode
1946
1947In the context of the L<stat(2)> syscall, refers to the field holding
1948the L</permission bits> and the type of the L</file>.
1949
1950=item modifier
1951
1952See L</statement modifier>, L</regular expression modifier>, and
1953L</lvalue modifier>, not necessarily in that order.
1954
1955=item module
1956
1957A L</file> that defines a L</package> of (almost) the same name, which
1958can either L</export> symbols or function as an L</object> class.  (A
1959module's main I<.pm> file may also load in other files in support of
1960the module.)  See the L<use|perlfunc/use> built-in.
1961
1962=item modulus
1963
1964An integer divisor when you're interested in the remainder instead of
1965the quotient.
1966
1967=item monger
1968
1969Short for Perl Monger, a purveyor of Perl.
1970
1971=item mortal
1972
1973A temporary value scheduled to die when the current statement
1974finishes.
1975
1976=item multidimensional array
1977
1978An array with multiple subscripts for finding a single element.  Perl
1979implements these using L<references|/reference>--see L<perllol> and
1980L<perldsc>.
1981
1982=item multiple inheritance
1983
1984The features you got from your mother and father, mixed together
1985unpredictably.  (See also L</inheritance>, and L</single
1986inheritance>.)  In computer languages (including Perl), the notion
1987that a given class may have multiple direct ancestors or L<base
1988classes|/base class>.
1989
1990=back
1991
1992=head2 N
1993
1994=over 4
1995
1996=item named pipe
1997
1998A L</pipe> with a name embedded in the L</filesystem> so that it can
1999be accessed by two unrelated L<processes|/process>.
2000
2001=item namespace
2002
2003A domain of names.  You needn't worry about whether the names in one
2004such domain have been used in another.  See L</package>.
2005
2006=item network address
2007
2008The most important attribute of a socket, like your telephone's
2009telephone number.  Typically an IP address.  See also L</port>.
2010
2011=item newline
2012
2013A single character that represents the end of a line, with the ASCII
2014value of 012 octal under Unix (but 015 on a Mac), and represented by
2015C<\n> in Perl strings.  For Windows machines writing text files, and
2016for certain physical devices like terminals, the single newline gets
2017automatically translated by your C library into a line feed and a
2018carriage return, but normally, no translation is done.
2019
2020=item NFS
2021
2022Network File System, which allows you to mount a remote filesystem as
2023if it were local.
2024
2025=item null character
2026
2027A character with the ASCII value of zero.  It's used by C to terminate
2028strings, but Perl allows strings to contain a null.
2029
2030=item null list
2031
2032A valueless value represented in Perl by C<()>.  It is not really a
2033L</LIST>, but an expression that yields C<undef> in L</scalar context> and
2034a L</list value> with zero elements in L</list context>.
2035
2036=item null string
2037
2038A L</string> containing no characters, not to be confused with a
2039string containing a L</null character>, which has a positive length
2040and is L</true>.
2041
2042=item numeric context
2043
2044The situation in which an expression is expected by its surroundings
2045(the code calling it) to return a number.  See also L</context> and
2046L</string context>.
2047
2048=item NV
2049
2050Short for Nevada, no part of which will ever be confused with
2051civilization.  NV also means an internal floating-point Numeric Value
2052of the type a L</scalar> can hold, not to be confused with an L</IV>.
2053
2054=item nybble
2055
2056Half a L</byte>, equivalent to one L</hexadecimal> digit, and worth
2057four L<bits|/bit>.
2058
2059=back
2060
2061=head2 O
2062
2063=over 4
2064
2065=item object
2066
2067An L</instance> of a L</class>.  Something that "knows" what
2068user-defined type (class) it is, and what it can do because of what
2069class it is.  Your program can request an object to do things, but the
2070object gets to decide whether it wants to do them or not.  Some
2071objects are more accommodating than others.
2072
2073=item octal
2074
2075A number in base 8.  Only the digits 0 through 7 are allowed.  Octal
2076constants in Perl start with 0, as in 013.  See also the
2077L<oct|perlfunc/oct> function.
2078
2079=item offset
2080
2081How many things you have to skip over when moving from the beginning
2082of a string or array to a specific position within it.  Thus, the
2083minimum offset is zero, not one, because you don't skip anything to
2084get to the first item.
2085
2086=item one-liner
2087
2088An entire computer program crammed into one line of text.
2089
2090=item open source software
2091
2092Programs for which the source code is freely available and freely
2093redistributable, with no commercial strings attached.  For a more
2094detailed definition, see L<http://www.opensource.org/osd.html>.
2095
2096=item operand
2097
2098An L</expression> that yields a L</value> that an L</operator>
2099operates on.  See also L</precedence>.
2100
2101=item operating system
2102
2103A special program that runs on the bare machine and hides the gory
2104details of managing L<processes|/process> and L<devices|/device>.
2105Usually used in a looser sense to indicate a particular culture of
2106programming.  The loose sense can be used at varying levels of
2107specificity.  At one extreme, you might say that all versions of Unix
2108and Unix-lookalikes are the same operating system (upsetting many
2109people, especially lawyers and other advocates).  At the other
2110extreme, you could say this particular version of this particular
2111vendor's operating system is different from any other version of this
2112or any other vendor's operating system.  Perl is much more portable
2113across operating systems than many other languages.  See also
2114L</architecture> and L</platform>.
2115
2116=item operator
2117
2118A gizmo that transforms some number of input values to some number of
2119output values, often built into a language with a special syntax or
2120symbol.  A given operator may have specific expectations about what
2121L<types|/type> of data you give as its arguments
2122(L<operands|/operand>) and what type of data you want back from it.
2123
2124=item operator overloading
2125
2126A kind of L</overloading> that you can do on built-in
2127L<operators|/operator> to make them work on L<objects|/object> as if
2128the objects were ordinary scalar values, but with the actual semantics
2129supplied by the object class.  This is set up with the L<overload>
2130L</pragma>.
2131
2132=item options
2133
2134See either L<switches|/switch> or L</regular expression modifier>.
2135
2136=item ordinal
2137
2138Another name for L</code point>
2139
2140=item overloading
2141
2142Giving additional meanings to a symbol or construct.  Actually, all
2143languages do overloading to one extent or another, since people are
2144good at figuring out things from L</context>.
2145
2146=item overriding
2147
2148Hiding or invalidating some other definition of the same name.  (Not
2149to be confused with L</overloading>, which adds definitions that must
2150be disambiguated some other way.) To confuse the issue further, we use
2151the word with two overloaded definitions: to describe how you can
2152define your own L</subroutine> to hide a built-in L</function> of the
2153same name (see L<perlsub/Overriding Built-in Functions>) and to
2154describe how you can define a replacement L</method> in a L</derived
2155class> to hide a L</base class>'s method of the same name (see
2156L<perlobj>).
2157
2158=item owner
2159
2160The one user (apart from the superuser) who has absolute control over
2161a L</file>.  A file may also have a L</group> of users who may
2162exercise joint ownership if the real owner permits it.  See
2163L</permission bits>.
2164
2165=back
2166
2167=head2 P
2168
2169=over 4
2170
2171=item package
2172
2173A L</namespace> for global L<variables|/variable>,
2174L<subroutines|/subroutine>, and the like, such that they can be kept
2175separate from like-named L<symbols|/symbol> in other namespaces.  In a
2176sense, only the package is global, since the symbols in the package's
2177symbol table are only accessible from code compiled outside the
2178package by naming the package.  But in another sense, all package
2179symbols are also globals--they're just well-organized globals.
2180
2181=item pad
2182
2183Short for L</scratchpad>.
2184
2185=item parameter
2186
2187See L</argument>.
2188
2189=item parent class
2190
2191See L</base class>.
2192
2193=item parse tree
2194
2195See L</syntax tree>.
2196
2197=item parsing
2198
2199The subtle but sometimes brutal art of attempting to turn your
2200possibly malformed program into a valid L</syntax tree>.
2201
2202=item patch
2203
2204To fix by applying one, as it were.  In the realm of hackerdom, a
2205listing of the differences between two versions of a program as might
2206be applied by the I<patch>(1) program when you want to fix a bug or
2207upgrade your old version.
2208
2209=item PATH
2210
2211The list of L<directories|/directory> the system searches to find a
2212program you want to L</execute>.  The list is stored as one of your
2213L<environment variables|/environment variable>, accessible in Perl as
2214C<$ENV{PATH}>.
2215
2216=item pathname
2217
2218A fully qualified filename such as I</usr/bin/perl>.  Sometimes
2219confused with L</PATH>.
2220
2221=item pattern
2222
2223A template used in L</pattern matching>.
2224
2225=item pattern matching
2226
2227Taking a pattern, usually a L</regular expression>, and trying the
2228pattern various ways on a string to see whether there's any way to
2229make it fit.  Often used to pick interesting tidbits out of a file.
2230
2231=item permission bits
2232
2233Bits that the L</owner> of a file sets or unsets to allow or disallow
2234access to other people.  These flag bits are part of the L</mode> word
2235returned by the L<stat|perlfunc/stat> built-in when you ask about a
2236file.  On Unix systems, you can check the I<ls>(1) manpage for more
2237information.
2238
2239=item Pern
2240
2241What you get when you do C<Perl++> twice.  Doing it only once will
2242curl your hair.  You have to increment it eight times to shampoo your
2243hair.  Lather, rinse, iterate.
2244
2245=item pipe
2246
2247A direct L</connection> that carries the output of one L</process> to
2248the input of another without an intermediate temporary file.  Once the
2249pipe is set up, the two processes in question can read and write as if
2250they were talking to a normal file, with some caveats.
2251
2252=item pipeline
2253
2254A series of L<processes|/process> all in a row, linked by
2255L<pipes|/pipe>, where each passes its output stream to the next.
2256
2257=item platform
2258
2259The entire hardware and software context in which a program runs.  A
2260 program written in a platform-dependent language might break if you
2261change any of: machine, operating system, libraries, compiler, or
2262system configuration.  The I<perl> interpreter has to be compiled
2263differently for each platform because it is implemented in C, but
2264programs written in the Perl language are largely
2265platform-independent.
2266
2267=item pod
2268
2269The markup used to embed documentation into your Perl code.  See
2270L<perlpod>.
2271
2272=item pointer
2273
2274A L</variable> in a language like C that contains the exact memory
2275location of some other item.  Perl handles pointers internally so you
2276don't have to worry about them.  Instead, you just use symbolic
2277pointers in the form of L<keys|/key> and L</variable> names, or L<hard
2278references|/hard reference>, which aren't pointers (but act like
2279pointers and do in fact contain pointers).
2280
2281=item polymorphism
2282
2283The notion that you can tell an L</object> to do something generic,
2284and the object will interpret the command in different ways depending
2285on its type.  [E<lt>Gk many shapes]
2286
2287=item port
2288
2289The part of the address of a TCP or UDP socket that directs packets to
2290the correct process after finding the right machine, something like
2291the phone extension you give when you reach the company operator.
2292Also, the result of converting code to run on a different platform
2293than originally intended, or the verb denoting this conversion.
2294
2295=item portable
2296
2297Once upon a time, C code compilable under both BSD and SysV.  In
2298general, code that can be easily converted to run on another
2299L</platform>, where "easily" can be defined however you like, and
2300usually is.  Anything may be considered portable if you try hard
2301enough.  See I<mobile home> or I<London Bridge>.
2302
2303=item porter
2304
2305Someone who "carries" software from one L</platform> to another.
2306Porting programs written in platform-dependent languages such as C can
2307be difficult work, but porting programs like Perl is very much worth
2308the agony.
2309
2310=item POSIX
2311
2312The Portable Operating System Interface specification.
2313
2314=item postfix
2315
2316An L</operator> that follows its L</operand>, as in C<$x++>.
2317
2318=item pp
2319
2320An internal shorthand for a "push-pop" code, that is, C code
2321implementing Perl's stack machine.
2322
2323=item pragma
2324
2325A standard module whose practical hints and suggestions are received
2326(and possibly ignored) at compile time.  Pragmas are named in all
2327lowercase.
2328
2329=item precedence
2330
2331The rules of conduct that, in the absence of other guidance, determine
2332what should happen first.  For example, in the absence of parentheses,
2333you always do multiplication before addition.
2334
2335=item prefix
2336
2337An L</operator> that precedes its L</operand>, as in C<++$x>.
2338
2339=item preprocessing
2340
2341What some helper L</process> did to transform the incoming data into a
2342form more suitable for the current process.  Often done with an
2343incoming L</pipe>.  See also L</C preprocessor>.
2344
2345=item procedure
2346
2347A L</subroutine>.
2348
2349=item process
2350
2351An instance of a running program.  Under multitasking systems like
2352Unix, two or more separate processes could be running the same program
2353independently at the same time--in fact, the L<fork|perlfunc/fork>
2354function is designed to bring about this happy state of affairs.
2355Under other operating systems, processes are sometimes called
2356"threads", "tasks", or "jobs", often with slight nuances in meaning.
2357
2358=item program generator
2359
2360A system that algorithmically writes code for you in a high-level
2361language.  See also L</code generator>.
2362
2363=item progressive matching
2364
2365L<Pattern matching|/pattern matching> that picks up where it left off before.
2366
2367=item property
2368
2369See either L</instance variable> or L</character property>.
2370
2371=item protocol
2372
2373In networking, an agreed-upon way of sending messages back and forth
2374so that neither correspondent will get too confused.
2375
2376=item prototype
2377
2378An optional part of a L</subroutine> declaration telling the Perl
2379compiler how many and what flavor of arguments may be passed as
2380L</actual arguments>, so that you can write subroutine calls that
2381parse much like built-in functions.  (Or don't parse, as the case may
2382be.)
2383
2384=item pseudofunction
2385
2386A construct that sometimes looks like a function but really isn't.
2387Usually reserved for L</lvalue> modifiers like L<my|perlfunc/my>, for
2388L</context> modifiers like L<scalar|perlfunc/scalar>, and for the
2389pick-your-own-quotes constructs, C<q//>, C<qq//>, C<qx//>, C<qw//>,
2390C<qr//>, C<m//>, C<s///>, C<y///>, and C<tr///>.
2391
2392=item pseudohash
2393
2394A reference to an array whose initial element happens to hold a
2395reference to a hash.  You can treat a pseudohash reference as either
2396an array reference or a hash reference.
2397
2398=item pseudoliteral
2399
2400An L</operator> that looks something like a L</literal>, such as the
2401output-grabbing operator, C<`>I<C<command>>C<`>.
2402
2403=item public domain
2404
2405Something not owned by anybody.  Perl is copyrighted and is thus
2406I<not> in the public domain--it's just L</freely available> and
2407L</freely redistributable>.
2408
2409=item pumpkin
2410
2411A notional "baton" handed around the Perl community indicating who is
2412the lead integrator in some arena of development.
2413
2414=item pumpking
2415
2416A L</pumpkin> holder, the person in charge of pumping the pump, or at
2417least priming it.  Must be willing to play the part of the Great
2418Pumpkin now and then.
2419
2420=item PV
2421
2422A "pointer value", which is Perl Internals Talk for a C<char*>.
2423
2424=back
2425
2426=head2 Q
2427
2428=over 4
2429
2430=item qualified
2431
2432Possessing a complete name.  The symbol C<$Ent::moot> is qualified;
2433C<$moot> is unqualified.  A fully qualified filename is specified from
2434the top-level directory.
2435
2436=item quantifier
2437
2438A component of a L</regular expression> specifying how many times the
2439foregoing L</atom> may occur.
2440
2441=back
2442
2443=head2 R
2444
2445=over 4
2446
2447=item readable
2448
2449With respect to files, one that has the proper permission bit set to
2450let you access the file.  With respect to computer programs, one
2451that's written well enough that someone has a chance of figuring out
2452what it's trying to do.
2453
2454=item reaping
2455
2456The last rites performed by a parent L</process> on behalf of a
2457deceased child process so that it doesn't remain a L</zombie>.  See
2458the L<wait|perlfunc/wait> and L<waitpid|perlfunc/waitpid> function
2459calls.
2460
2461=item record
2462
2463A set of related data values in a L</file> or L</stream>, often
2464associated with a unique L</key> field.  In Unix, often commensurate
2465with a L</line>, or a blank-line-terminated set of lines (a
2466"paragraph").  Each line of the I</etc/passwd> file is a record, keyed
2467on login name, containing information about that user.
2468
2469=item recursion
2470
2471The art of defining something (at least partly) in terms of itself,
2472which is a naughty no-no in dictionaries but often works out okay in
2473computer programs if you're careful not to recurse forever, which is
2474like an infinite loop with more spectacular failure modes.
2475
2476=item reference
2477
2478Where you look to find a pointer to information somewhere else.  (See
2479L</indirection>.)  References come in two flavors, L<symbolic
2480references|/symbolic reference> and L<hard references|/hard
2481reference>.
2482
2483=item referent
2484
2485Whatever a reference refers to, which may or may not have a name.
2486Common types of referents include scalars, arrays, hashes, and
2487subroutines.
2488
2489=item regex
2490
2491See L</regular expression>.
2492
2493=item regular expression
2494
2495A single entity with various interpretations, like an elephant.  To a
2496computer scientist, it's a grammar for a little language in which some
2497strings are legal and others aren't.  To normal people, it's a pattern
2498you can use to find what you're looking for when it varies from case
2499to case.  Perl's regular expressions are far from regular in the
2500theoretical sense, but in regular use they work quite well.  Here's a
2501regular expression: C</Oh s.*t./>.  This will match strings like "C<Oh
2502say can you see by the dawn's early light>" and "C<Oh sit!>".  See
2503L<perlre>.
2504
2505=item regular expression modifier
2506
2507An option on a pattern or substitution, such as C</i> to render the
2508pattern case insensitive.  See also L</cloister>.
2509
2510=item regular file
2511
2512A L</file> that's not a L</directory>, a L</device>, a named L</pipe>
2513or L</socket>, or a L</symbolic link>.  Perl uses the C<-f> file test
2514operator to identify regular files.  Sometimes called a "plain" file.
2515
2516=item relational operator
2517
2518An L</operator> that says whether a particular ordering relationship
2519is L</true> about a pair of L<operands|/operand>.  Perl has both
2520numeric and string relational operators.  See L</collating sequence>.
2521
2522=item reserved words
2523
2524A word with a specific, built-in meaning to a L</compiler>, such as
2525C<if> or L<delete|perlfunc/delete>.  In many languages (not Perl),
2526it's illegal to use reserved words to name anything else.  (Which is
2527why they're reserved, after all.)  In Perl, you just can't use them to
2528name L<labels|/label> or L<filehandles|/filehandle>.  Also called
2529"keywords".
2530
2531=item restricted hash
2532
2533A L</hash> with a closed set of allowed keys. See L<Hash::Util>.
2534
2535=item return value
2536
2537The L</value> produced by a L</subroutine> or L</expression> when
2538evaluated.  In Perl, a return value may be either a L</list> or a
2539L</scalar>.
2540
2541=item RFC
2542
2543Request For Comment, which despite the timid connotations is the name
2544of a series of important standards documents.
2545
2546=item right shift
2547
2548A L</bit shift> that divides a number by some power of 2.
2549
2550=item root
2551
2552The superuser (UID == 0).  Also, the top-level directory of the
2553filesystem.
2554
2555=item RTFM
2556
2557What you are told when someone thinks you should Read The Fine Manual.
2558
2559=item run phase
2560
2561Any time after Perl starts running your main program.  See also
2562L</compile phase>.  Run phase is mostly spent in L</run time> but may
2563also be spent in L</compile time> when L<require|perlfunc/require>,
2564L<do|perlfunc/do> C<FILE>, or L<eval|perlfunc/eval> C<STRING>
2565operators are executed or when a substitution uses the C</ee>
2566modifier.
2567
2568=item run time
2569
2570The time when Perl is actually doing what your code says to do, as
2571opposed to the earlier period of time when it was trying to figure out
2572whether what you said made any sense whatsoever, which is L</compile
2573time>.
2574
2575=item run-time pattern
2576
2577A pattern that contains one or more variables to be interpolated
2578before parsing the pattern as a L</regular expression>, and that
2579therefore cannot be analyzed at compile time, but must be re-analyzed
2580each time the pattern match operator is evaluated.  Run-time patterns
2581are useful but expensive.
2582
2583=item RV
2584
2585A recreational vehicle, not to be confused with vehicular recreation.
2586RV also means an internal Reference Value of the type a L</scalar> can
2587hold.  See also L</IV> and L</NV> if you're not confused yet.
2588
2589=item rvalue
2590
2591A L</value> that you might find on the right side of an
2592L</assignment>.  See also L</lvalue>.
2593
2594=back
2595
2596=head2 S
2597
2598=over 4
2599
2600=item scalar
2601
2602A simple, singular value; a number, L</string>, or L</reference>.
2603
2604=item scalar context
2605
2606The situation in which an L</expression> is expected by its
2607surroundings (the code calling it) to return a single L</value> rather
2608than a L</list> of values.  See also L</context> and L</list context>.
2609A scalar context sometimes imposes additional constraints on the
2610return value--see L</string context> and L</numeric context>.
2611Sometimes we talk about a L</Boolean context> inside conditionals, but
2612this imposes no additional constraints, since any scalar value,
2613whether numeric or L</string>, is already true or false.
2614
2615=item scalar literal
2616
2617A number or quoted L</string>--an actual L</value> in the text of your
2618program, as opposed to a L</variable>.
2619
2620=item scalar value
2621
2622A value that happens to be a L</scalar> as opposed to a L</list>.
2623
2624=item scalar variable
2625
2626A L</variable> prefixed with C<$> that holds a single value.
2627
2628=item scope
2629
2630How far away you can see a variable from, looking through one.  Perl
2631has two visibility mechanisms: it does L</dynamic scoping> of
2632L<local|perlfunc/local> L<variables|/variable>, meaning that the rest
2633of the L</block>, and any L<subroutines|/subroutine> that are called
2634by the rest of the block, can see the variables that are local to the
2635block.  Perl does L</lexical scoping> of L<my|perlfunc/my> variables,
2636meaning that the rest of the block can see the variable, but other
2637subroutines called by the block I<cannot> see the variable.
2638
2639=item scratchpad
2640
2641The area in which a particular invocation of a particular file or
2642subroutine keeps some of its temporary values, including any lexically
2643scoped variables.
2644
2645=item script
2646
2647A text L</file> that is a program intended to be L<executed|/execute>
2648directly rather than L<compiled|/compiler> to another form of file
2649before execution.  Also, in the context of L</Unicode>, a writing
2650system for a particular language or group of languages, such as Greek,
2651Bengali, or Klingon.
2652
2653=item script kiddie
2654
2655A L</cracker> who is not a L</hacker>, but knows just enough to run
2656canned scripts.  A cargo-cult programmer.
2657
2658=item sed
2659
2660A venerable Stream EDitor from which Perl derives some of its ideas.
2661
2662=item semaphore
2663
2664A fancy kind of interlock that prevents multiple L<threads|/thread> or
2665L<processes|/process> from using up the same resources simultaneously.
2666
2667=item separator
2668
2669A L</character> or L</string> that keeps two surrounding strings from
2670being confused with each other.  The L<split|perlfunc/split> function
2671works on separators.  Not to be confused with L<delimiters|/delimiter>
2672or L<terminators|/terminator>.  The "or" in the previous sentence
2673separated the two alternatives.
2674
2675=item serialization
2676
2677Putting a fancy L</data structure> into linear order so that it can be
2678stored as a L</string> in a disk file or database or sent through a
2679L</pipe>.  Also called marshalling.
2680
2681=item server
2682
2683In networking, a L</process> that either advertises a L</service> or
2684just hangs around at a known location and waits for L<clients|/client>
2685who need service to get in touch with it.
2686
2687=item service
2688
2689Something you do for someone else to make them happy, like giving them
2690the time of day (or of their life).  On some machines, well-known
2691services are listed by the L<getservent|perlfunc/getservent> function.
2692
2693=item setgid
2694
2695Same as L</setuid>, only having to do with giving away L</group>
2696privileges.
2697
2698=item setuid
2699
2700Said of a program that runs with the privileges of its L</owner>
2701rather than (as is usually the case) the privileges of whoever is
2702running it.  Also describes the bit in the mode word (L</permission
2703bits>) that controls the feature.  This bit must be explicitly set by
2704the owner to enable this feature, and the program must be carefully
2705written not to give away more privileges than it ought to.
2706
2707=item shared memory
2708
2709A piece of L</memory> accessible by two different
2710L<processes|/process> who otherwise would not see each other's memory.
2711
2712=item shebang
2713
2714Irish for the whole McGillicuddy.  In Perl culture, a portmanteau of
2715"sharp" and "bang", meaning the C<#!> sequence that tells the system
2716where to find the interpreter.
2717
2718=item shell
2719
2720A L</command>-line L</interpreter>.  The program that interactively
2721gives you a prompt, accepts one or more L<lines|/line> of input, and
2722executes the programs you mentioned, feeding each of them their proper
2723L<arguments|/argument> and input data.  Shells can also execute
2724scripts containing such commands.  Under Unix, typical shells include
2725the Bourne shell (I</bin/sh>), the C shell (I</bin/csh>), and the Korn
2726shell (I</bin/ksh>).  Perl is not strictly a shell because it's not
2727interactive (although Perl programs can be interactive).
2728
2729=item side effects
2730
2731Something extra that happens when you evaluate an L</expression>.
2732Nowadays it can refer to almost anything.  For example, evaluating a
2733simple assignment statement typically has the "side effect" of
2734assigning a value to a variable.  (And you thought assigning the value
2735was your primary intent in the first place!)  Likewise, assigning a
2736value to the special variable C<$|> (C<$AUTOFLUSH>) has the side
2737effect of forcing a flush after every L<write|perlfunc/write> or
2738L<print|perlfunc/print> on the currently selected filehandle.
2739
2740=item signal
2741
2742A bolt out of the blue; that is, an event triggered by the
2743L</operating system>, probably when you're least expecting it.
2744
2745=item signal handler
2746
2747A L</subroutine> that, instead of being content to be called in the
2748normal fashion, sits around waiting for a bolt out of the blue before
2749it will deign to L</execute>.  Under Perl, bolts out of the blue are
2750called signals, and you send them with the L<kill|perlfunc/kill>
2751built-in.  See L<perlvar/%SIG> and L<perlipc/Signals>.
2752
2753=item single inheritance
2754
2755The features you got from your mother, if she told you that you don't
2756have a father.  (See also L</inheritance> and L</multiple
2757inheritance>.)  In computer languages, the notion that
2758L<classes|/class> reproduce asexually so that a given class can only
2759have one direct ancestor or L</base class>.  Perl supplies no such
2760restriction, though you may certainly program Perl that way if you
2761like.
2762
2763=item slice
2764
2765A selection of any number of L<elements|/element> from a L</list>,
2766L</array>, or L</hash>.
2767
2768=item slurp
2769
2770To read an entire L</file> into a L</string> in one operation.
2771
2772=item socket
2773
2774An endpoint for network communication among multiple
2775L<processes|/process> that works much like a telephone or a post
2776office box.  The most important thing about a socket is its L</network
2777address> (like a phone number).  Different kinds of sockets have
2778different kinds of addresses--some look like filenames, and some
2779don't.
2780
2781=item soft reference
2782
2783See L</symbolic reference>.
2784
2785=item source filter
2786
2787A special kind of L</module> that does L</preprocessing> on your
2788script just before it gets to the L</tokener>.
2789
2790=item stack
2791
2792A device you can put things on the top of, and later take them back
2793off in the opposite order in which you put them on.  See L</LIFO>.
2794
2795=item standard
2796
2797Included in the official Perl distribution, as in a standard module, a
2798standard tool, or a standard Perl L</manpage>.
2799
2800=item standard error
2801
2802The default output L</stream> for nasty remarks that don't belong in
2803L</standard output>.  Represented within a Perl program by the
2804L</filehandle> L</STDERR>.  You can use this stream explicitly, but the
2805L<die|perlfunc/die> and L<warn|perlfunc/warn> built-ins write to your
2806standard error stream automatically.
2807
2808=item standard I/O
2809
2810A standard C library for doing L<buffered|/buffer> input and output to
2811the L</operating system>.  (The "standard" of standard I/O is only
2812marginally related to the "standard" of standard input and output.)
2813In general, Perl relies on whatever implementation of standard I/O a
2814given operating system supplies, so the buffering characteristics of a
2815Perl program on one machine may not exactly match those on another
2816machine.  Normally this only influences efficiency, not semantics.  If
2817your standard I/O package is doing block buffering and you want it to
2818L</flush> the buffer more often, just set the C<$|> variable to a true
2819value.
2820
2821=item standard input
2822
2823The default input L</stream> for your program, which if possible
2824shouldn't care where its data is coming from.  Represented within a
2825Perl program by the L</filehandle> L</STDIN>.
2826
2827=item standard output
2828
2829The default output L</stream> for your program, which if possible
2830shouldn't care where its data is going.  Represented within a Perl
2831program by the L</filehandle> L</STDOUT>.
2832
2833=item stat structure
2834
2835A special internal spot in which Perl keeps the information about the
2836last L</file> on which you requested information.
2837
2838=item statement
2839
2840A L</command> to the computer about what to do next, like a step in a
2841recipe: "Add marmalade to batter and mix until mixed."  A statement is
2842distinguished from a L</declaration>, which doesn't tell the computer
2843to do anything, but just to learn something.
2844
2845=item statement modifier
2846
2847A L</conditional> or L</loop> that you put after the L</statement>
2848instead of before, if you know what we mean.
2849
2850=item static
2851
2852Varying slowly compared to something else.  (Unfortunately, everything
2853is relatively stable compared to something else, except for certain
2854elementary particles, and we're not so sure about them.)  In
2855computers, where things are supposed to vary rapidly, "static" has a
2856derogatory connotation, indicating a slightly dysfunctional
2857L</variable>, L</subroutine>, or L</method>.  In Perl culture, the
2858word is politely avoided.
2859
2860=item static method
2861
2862No such thing.  See L</class method>.
2863
2864=item static scoping
2865
2866No such thing.  See L</lexical scoping>.
2867
2868=item static variable
2869
2870No such thing.  Just use a L</lexical variable> in a scope larger than
2871your L</subroutine>.
2872
2873=item status
2874
2875The L</value> returned to the parent L</process> when one of its child
2876processes dies.  This value is placed in the special variable C<$?>.
2877Its upper eight L<bits|/bit> are the exit status of the defunct
2878process, and its lower eight bits identify the signal (if any) that
2879the process died from.  On Unix systems, this status value is the same
2880as the status word returned by I<wait>(2).  See L<perlfunc/system>.
2881
2882=item STDERR
2883
2884See L</standard error>.
2885
2886=item STDIN
2887
2888See L</standard input>.
2889
2890=item STDIO
2891
2892See L</standard IE<sol>O>.
2893
2894=item STDOUT
2895
2896See L</standard output>.
2897
2898=item stream
2899
2900A flow of data into or out of a process as a steady sequence of bytes
2901or characters, without the appearance of being broken up into packets.
2902This is a kind of L</interface>--the underlying L</implementation> may
2903well break your data up into separate packets for delivery, but this
2904is hidden from you.
2905
2906=item string
2907
2908A sequence of characters such as "He said !@#*&%@#*?!".  A string does
2909not have to be entirely printable.
2910
2911=item string context
2912
2913The situation in which an expression is expected by its surroundings
2914(the code calling it) to return a L</string>.  See also L</context>
2915and L</numeric context>.
2916
2917=item stringification
2918
2919The process of producing a L</string> representation of an abstract
2920object.
2921
2922=item struct
2923
2924C keyword introducing a structure definition or name.
2925
2926=item structure
2927
2928See L</data structure>.
2929
2930=item subclass
2931
2932See L</derived class>.
2933
2934=item subpattern
2935
2936A component of a L</regular expression> pattern.
2937
2938=item subroutine
2939
2940A named or otherwise accessible piece of program that can be invoked
2941from elsewhere in the program in order to accomplish some sub-goal of
2942the program.  A subroutine is often parameterized to accomplish
2943different but related things depending on its input
2944L<arguments|/argument>.  If the subroutine returns a meaningful
2945L</value>, it is also called a L</function>.
2946
2947=item subscript
2948
2949A L</value> that indicates the position of a particular L</array>
2950L</element> in an array.
2951
2952=item substitution
2953
2954Changing parts of a string via the C<s///> operator.  (We avoid use of
2955this term to mean L</variable interpolation>.)
2956
2957=item substring
2958
2959A portion of a L</string>, starting at a certain L</character>
2960position (L</offset>) and proceeding for a certain number of
2961characters.
2962
2963=item superclass
2964
2965See L</base class>.
2966
2967=item superuser
2968
2969The person whom the L</operating system> will let do almost anything.
2970Typically your system administrator or someone pretending to be your
2971system administrator.  On Unix systems, the L</root> user.  On Windows
2972systems, usually the Administrator user.
2973
2974=item SV
2975
2976Short for "scalar value".  But within the Perl interpreter every
2977L</referent> is treated as a member of a class derived from SV, in an
2978object-oriented sort of way.  Every L</value> inside Perl is passed
2979around as a C language C<SV*> pointer.  The SV L</struct> knows its
2980own "referent type", and the code is smart enough (we hope) not to try
2981to call a L</hash> function on a L</subroutine>.
2982
2983=item switch
2984
2985An option you give on a command line to influence the way your program
2986works, usually introduced with a minus sign.  The word is also used as
2987a nickname for a L</switch statement>.
2988
2989=item switch cluster
2990
2991The combination of multiple command-line switches (e.g., B<-a -b -c>)
2992into one switch (e.g., B<-abc>).  Any switch with an additional
2993L</argument> must be the last switch in a cluster.
2994
2995=item switch statement
2996
2997A program technique that lets you evaluate an L</expression> and then,
2998based on the value of the expression, do a multiway branch to the
2999appropriate piece of code for that value.  Also called a "case
3000structure", named after the similar Pascal construct.  See
3001See L<perlsyn/Basic BLOCKs>.
3002
3003=item symbol
3004
3005Generally, any L</token> or L</metasymbol>.  Often used more
3006specifically to mean the sort of name you might find in a L</symbol
3007table>.
3008
3009=item symbol table
3010
3011Where a L</compiler> remembers symbols.  A program like Perl must
3012somehow remember all the names of all the L<variables|/variable>,
3013L<filehandles|/filehandle>, and L<subroutines|/subroutine> you've
3014used.  It does this by placing the names in a symbol table, which is
3015implemented in Perl using a L</hash table>.  There is a separate
3016symbol table for each L</package> to give each package its own
3017L</namespace>.
3018
3019=item symbolic debugger
3020
3021A program that lets you step through the L<execution|/execute> of your
3022program, stopping or printing things out here and there to see whether
3023anything has gone wrong, and if so, what.  The "symbolic" part just
3024means that you can talk to the debugger using the same symbols with
3025which your program is written.
3026
3027=item symbolic link
3028
3029An alternate filename that points to the real L</filename>, which in
3030turn points to the real L</file>.  Whenever the L</operating system>
3031is trying to parse a L</pathname> containing a symbolic link, it
3032merely substitutes the new name and continues parsing.
3033
3034=item symbolic reference
3035
3036A variable whose value is the name of another variable or subroutine.
3037By L<dereferencing|/dereference> the first variable, you can get at
3038the second one.  Symbolic references are illegal under L<use strict
3039'refs'|strict/strict refs>.
3040
3041=item synchronous
3042
3043Programming in which the orderly sequence of events can be determined;
3044that is, when things happen one after the other, not at the same time.
3045
3046=item syntactic sugar
3047
3048An alternative way of writing something more easily; a shortcut.
3049
3050=item syntax
3051
3052From Greek, "with-arrangement".  How things (particularly symbols) are
3053put together with each other.
3054
3055=item syntax tree
3056
3057An internal representation of your program wherein lower-level
3058L<constructs|/construct> dangle off the higher-level constructs
3059enclosing them.
3060
3061=item syscall
3062
3063A L</function> call directly to the L</operating system>.  Many of the
3064important subroutines and functions you use aren't direct system
3065calls, but are built up in one or more layers above the system call
3066level.  In general, Perl programmers don't need to worry about the
3067distinction.  However, if you do happen to know which Perl functions
3068are really syscalls, you can predict which of these will set the C<$!>
3069(C<$ERRNO>) variable on failure.  Unfortunately, beginning programmers
3070often confusingly employ the term "system call" to mean what happens
3071when you call the Perl L<system|perlfunc/system> function, which
3072actually involves many syscalls.  To avoid any confusion, we nearly
3073always use say "syscall" for something you could call indirectly via
3074Perl's L<syscall|perlfunc/syscall> function, and never for something
3075you would call with Perl's L<system|perlfunc/system> function.
3076
3077=back
3078
3079=head2 T
3080
3081=over 4
3082
3083=item tainted
3084
3085Said of data derived from the grubby hands of a user and thus unsafe
3086for a secure program to rely on.  Perl does taint checks if you run a
3087L</setuid> (or L</setgid>) program, or if you use the B<-T> switch.
3088
3089=item TCP
3090
3091Short for Transmission Control Protocol.  A protocol wrapped around
3092the Internet Protocol to make an unreliable packet transmission
3093mechanism appear to the application program to be a reliable
3094L</stream> of bytes.  (Usually.)
3095
3096=item term
3097
3098Short for a "terminal", that is, a leaf node of a L</syntax tree>.  A
3099thing that functions grammatically as an L</operand> for the operators
3100in an expression.
3101
3102=item terminator
3103
3104A L</character> or L</string> that marks the end of another string.
3105The C<$/> variable contains the string that terminates a
3106L<readline|perlfunc/readline> operation, which L<chomp|perlfunc/chomp>
3107deletes from the end.  Not to be confused with
3108L<delimiters|/delimiter> or L<separators|/separator>.  The period at
3109the end of this sentence is a terminator.
3110
3111=item ternary
3112
3113An L</operator> taking three L<operands|/operand>.  Sometimes
3114pronounced L</trinary>.
3115
3116=item text
3117
3118A L</string> or L</file> containing primarily printable characters.
3119
3120=item thread
3121
3122Like a forked process, but without L</fork>'s inherent memory
3123protection.  A thread is lighter weight than a full process, in that a
3124process could have multiple threads running around in it, all fighting
3125over the same process's memory space unless steps are taken to protect
3126threads from each other.  See L<threads>.
3127
3128=item tie
3129
3130The bond between a magical variable and its implementation class.  See
3131L<perlfunc/tie> and L<perltie>.
3132
3133=item TMTOWTDI
3134
3135There's More Than One Way To Do It, the Perl Motto.  The notion that
3136there can be more than one valid path to solving a programming problem
3137in context.  (This doesn't mean that more ways are always better or
3138that all possible paths are equally desirable--just that there need
3139not be One True Way.)  Pronounced TimToady.
3140
3141=item token
3142
3143A morpheme in a programming language, the smallest unit of text with
3144semantic significance.
3145
3146=item tokener
3147
3148A module that breaks a program text into a sequence of
3149L<tokens|/token> for later analysis by a parser.
3150
3151=item tokenizing
3152
3153Splitting up a program text into L<tokens|/token>.  Also known as
3154"lexing", in which case you get "lexemes" instead of tokens.
3155
3156=item toolbox approach
3157
3158The notion that, with a complete set of simple tools that work well
3159together, you can build almost anything you want.  Which is fine if
3160you're assembling a tricycle, but if you're building a defranishizing
3161comboflux regurgalator, you really want your own machine shop in which
3162to build special tools.  Perl is sort of a machine shop.
3163
3164=item transliterate
3165
3166To turn one string representation into another by mapping each
3167character of the source string to its corresponding character in the
3168result string.  See
3169L<perlop/trE<sol>SEARCHLISTE<sol>REPLACEMENTLISTE<sol>cdsr>.
3170
3171=item trigger
3172
3173An event that causes a L</handler> to be run.
3174
3175=item trinary
3176
3177Not a stellar system with three stars, but an L</operator> taking
3178three L<operands|/operand>.  Sometimes pronounced L</ternary>.
3179
3180=item troff
3181
3182A venerable typesetting language from which Perl derives the name of
3183its C<$%> variable and which is secretly used in the production of
3184Camel books.
3185
3186=item true
3187
3188Any scalar value that doesn't evaluate to 0 or C<"">.
3189
3190=item truncating
3191
3192Emptying a file of existing contents, either automatically when
3193opening a file for writing or explicitly via the
3194L<truncate|perlfunc/truncate> function.
3195
3196=item type
3197
3198See L</data type> and L</class>.
3199
3200=item type casting
3201
3202Converting data from one type to another.  C permits this.  Perl does
3203not need it.  Nor want it.
3204
3205=item typed lexical
3206
3207A L</lexical variable> that is declared with a L</class> type: C<my
3208Pony $bill>.
3209
3210=item typedef
3211
3212A type definition in the C language.
3213
3214=item typeglob
3215
3216Use of a single identifier, prefixed with C<*>.  For example, C<*name>
3217stands for any or all of C<$name>, C<@name>, C<%name>, C<&name>, or
3218just C<name>.  How you use it determines whether it is interpreted as
3219all or only one of them.  See L<perldata/Typeglobs and Filehandles>.
3220
3221=item typemap
3222
3223A description of how C types may be transformed to and from Perl types
3224within an L</extension> module written in L</XS>.
3225
3226=back
3227
3228=head2 U
3229
3230=over 4
3231
3232=item UDP
3233
3234User Datagram Protocol, the typical way to send L<datagrams|/datagram>
3235over the Internet.
3236
3237=item UID
3238
3239A user ID.  Often used in the context of L</file> or L</process>
3240ownership.
3241
3242=item umask
3243
3244A mask of those L</permission bits> that should be forced off when
3245creating files or directories, in order to establish a policy of whom
3246you'll ordinarily deny access to.  See the L<umask|perlfunc/umask>
3247function.
3248
3249=item unary operator
3250
3251An operator with only one L</operand>, like C<!> or
3252L<chdir|perlfunc/chdir>.  Unary operators are usually prefix
3253operators; that is, they precede their operand.  The C<++> and C<-->
3254operators can be either prefix or postfix.  (Their position I<does>
3255change their meanings.)
3256
3257=item Unicode
3258
3259A character set comprising all the major character sets of the world,
3260more or less.  See L<perlunicode> and L<http://www.unicode.org>.
3261
3262=item Unix
3263
3264A very large and constantly evolving language with several alternative
3265and largely incompatible syntaxes, in which anyone can define anything
3266any way they choose, and usually do.  Speakers of this language think
3267it's easy to learn because it's so easily twisted to one's own ends,
3268but dialectical differences make tribal intercommunication nearly
3269impossible, and travelers are often reduced to a pidgin-like subset of
3270the language.  To be universally understood, a Unix shell programmer
3271must spend years of study in the art.  Many have abandoned this
3272discipline and now communicate via an Esperanto-like language called
3273Perl.
3274
3275In ancient times, Unix was also used to refer to some code that a
3276couple of people at Bell Labs wrote to make use of a PDP-7 computer
3277that wasn't doing much of anything else at the time.
3278
3279=back
3280
3281=head2 V
3282
3283=over 4
3284
3285=item value
3286
3287An actual piece of data, in contrast to all the variables, references,
3288keys, indexes, operators, and whatnot that you need to access the
3289value.
3290
3291=item variable
3292
3293A named storage location that can hold any of various kinds of
3294L</value>, as your program sees fit.
3295
3296=item variable interpolation
3297
3298The L</interpolation> of a scalar or array variable into a string.
3299
3300=item variadic
3301
3302Said of a L</function> that happily receives an indeterminate number
3303of L</actual arguments>.
3304
3305=item vector
3306
3307Mathematical jargon for a list of L<scalar values|/scalar value>.
3308
3309=item virtual
3310
3311Providing the appearance of something without the reality, as in:
3312virtual memory is not real memory.  (See also L</memory>.)  The
3313opposite of "virtual" is "transparent", which means providing the
3314reality of something without the appearance, as in: Perl handles the
3315variable-length UTF-8 character encoding transparently.
3316
3317=item void context
3318
3319A form of L</scalar context> in which an L</expression> is not
3320expected to return any L</value> at all and is evaluated for its
3321L</side effects> alone.
3322
3323=item v-string
3324
3325A "version" or "vector" L</string> specified with a C<v> followed by a
3326series of decimal integers in dot notation, for instance,
3327C<v1.20.300.4000>.  Each number turns into a L</character> with the
3328specified ordinal value.  (The C<v> is optional when there are at
3329least three integers.)
3330
3331=back
3332
3333=head2 W
3334
3335=over 4
3336
3337=item warning
3338
3339A message printed to the L</STDERR> stream to the effect that something
3340might be wrong but isn't worth blowing up over.  See L<perlfunc/warn>
3341and the L<warnings> pragma.
3342
3343=item watch expression
3344
3345An expression which, when its value changes, causes a breakpoint in
3346the Perl debugger.
3347
3348=item whitespace
3349
3350A L</character> that moves your cursor but doesn't otherwise put
3351anything on your screen.  Typically refers to any of: space, tab, line
3352feed, carriage return, or form feed.
3353
3354=item word
3355
3356In normal "computerese", the piece of data of the size most
3357efficiently handled by your computer, typically 32 bits or so, give or
3358take a few powers of 2.  In Perl culture, it more often refers to an
3359alphanumeric L</identifier> (including underscores), or to a string of
3360nonwhitespace L<characters|/character> bounded by whitespace or string
3361boundaries.
3362
3363=item working directory
3364
3365Your current L</directory>, from which relative pathnames are
3366interpreted by the L</operating system>.  The operating system knows
3367your current directory because you told it with a
3368L<chdir|perlfunc/chdir> or because you started out in the place where
3369your parent L</process> was when you were born.
3370
3371=item wrapper
3372
3373A program or subroutine that runs some other program or subroutine for
3374you, modifying some of its input or output to better suit your
3375purposes.
3376
3377=item WYSIWYG
3378
3379What You See Is What You Get.  Usually used when something that
3380appears on the screen matches how it will eventually look, like Perl's
3381L<format|perlfunc/format> declarations.  Also used to mean the
3382opposite of magic because everything works exactly as it appears, as
3383in the three-argument form of L<open|perlfunc/open>.
3384
3385=back
3386
3387=head2 X
3388
3389=over 4
3390
3391=item XS
3392
3393A language to extend Perl with L<C> and C++. XS is an interface description
3394file format used to create an extension interface between
3395Perl and C code (or a C library) which one wishes to use with Perl.
3396See L<perlxs> for the exact explanation or read the L<perlxstut>
3397tutorial.
3398
3399=item XSUB
3400
3401An external L</subroutine> defined in L</XS>.
3402
3403=back
3404
3405=head2 Y
3406
3407=over 4
3408
3409=item yacc
3410
3411Yet Another Compiler Compiler.  A parser generator without which Perl
3412probably would not have existed.  See the file I<perly.y> in the Perl
3413source distribution.
3414
3415=back
3416
3417=head2 Z
3418
3419=over 4
3420
3421=item zero width
3422
3423A subpattern L</assertion> matching the L</null string> between
3424L<characters|/character>.
3425
3426=item zombie
3427
3428A process that has died (exited) but whose parent has not yet received
3429proper notification of its demise by virtue of having called
3430L<wait|perlfunc/wait> or L<waitpid|perlfunc/waitpid>.  If you
3431L<fork|perlfunc/fork>, you must clean up after your child processes
3432when they exit, or else the process table will fill up and your system
3433administrator will Not Be Happy with you.
3434
3435=back
3436
3437=head1 AUTHOR AND COPYRIGHT
3438
3439Based on the Glossary of Programming Perl, Third Edition,
3440by Larry Wall, Tom Christiansen & Jon Orwant.
3441Copyright (c) 2000, 1996, 1991 O'Reilly Media, Inc.
3442This document may be distributed under the same terms as Perl itself.
3443