[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-unattended/var/se3/unattended/install/linuxaux/opt/perl/lib/5.10.0/pod/ -> perlglossary.pod (source)

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


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1