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