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