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