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