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