=head1 NAME perlglossary - Perl Glossary =head1 DESCRIPTION A glossary of terms (technical and otherwise) used in the Perl documentation. Other useful sources include the Free On-Line Dictionary of Computing L, the Jargon File L, and Wikipedia L. =head2 A =over 4 =item accessor methods A L used to indirectly inspect or update an L's state (its L). =item actual arguments The L that you supply to a L or L when you call it. For instance, when you call C, the string C<"puff"> is the actual argument. See also L and L. =item address operator Some languages work directly with the memory addresses of values, but this can be like playing with fire. Perl provides a set of asbestos gloves for handling all memory management. The closest to an address operator in Perl is the backslash operator, but it gives you a L, which is much safer than a memory address. =item algorithm A well-defined sequence of steps, clearly enough explained that even a computer could do them. =item alias A nickname for something, which behaves in all ways as though you'd used the original name instead of the nickname. Temporary aliases are implicitly created in the loop variable for C loops, in the C<$_> variable for L or L operators, in C<$a> and C<$b> during L's comparison function, and in each element of C<@_> for the L of a subroutine call. Permanent aliases are explicitly created in L by L symbols or by assignment to L. Lexically scoped aliases for package variables are explicitly created by the L declaration. =item alternatives A list of possible choices from which you may select only one, as in "Would you like door A, B, or C?" Alternatives in regular expressions are separated with a single vertical bar: C<|>. Alternatives in normal Perl expressions are separated with a double vertical bar: C<||>. Logical alternatives in L expressions are separated with either C<||> or C. =item anonymous Used to describe a L that is not directly accessible through a named L. Such a referent must be indirectly accessible through at least one L. When the last hard reference goes away, the anonymous referent is destroyed without pity. =item architecture The kind of computer you're working on, where one "kind" of computer means all those computers sharing a compatible machine language. Since Perl programs are (typically) simple text files, not executable images, a Perl program is much less sensitive to the architecture it's running on than programs in other languages, such as C, that are compiled into machine code. See also L and L. =item argument A piece of data supplied to a L, L, L, or L to tell it what it's supposed to do. Also called a "parameter". =item ARGV The name of the array containing the L L from the command line. If you use the empty C<< EE >> operator, L is the name of both the L used to traverse the arguments and the L containing the name of the current input file. =item arithmetical operator A L such as C<+> or C that tells Perl to do the arithmetic you were supposed to learn in grade school. =item array An ordered sequence of L, stored such that you can easily access any of the values using an integer L that specifies the value's L in the sequence. =item array context An archaic expression for what is more correctly referred to as L. =item ASCII The American Standard Code for Information Interchange (a 7-bit character set adequate only for poorly representing English text). Often used loosely to describe the lowest 128 values of the various ISO-8859-X character sets, a bunch of mutually incompatible 8-bit codes sometimes described as half ASCII. See also L. =item assertion A component of a L that must be true for the pattern to match but does not necessarily match any characters itself. Often used specifically to mean a L assertion. =item assignment An L whose assigned mission in life is to change the value of a L. =item assignment operator Either a regular L, or a compound L composed of an ordinary assignment and some other operator, that changes the value of a variable in place, that is, relative to its old value. For example, C<$a += 2> adds C<2> to C<$a>. =item associative array See L. Please. =item associativity Determines whether you do the left L first or the right L first when you have "A L B L C" and the two operators are of the same precedence. Operators like C<+> are left associative, while operators like C<**> are right associative. See L for a list of operators and their associativity. =item asynchronous Said of events or activities whose relative temporal ordering is indeterminate because too many things are going on at once. Hence, an asynchronous event is one you didn't know when to expect. =item atom A L component potentially matching a L containing one or more characters and treated as an indivisible syntactic unit by any following L. (Contrast with an L that matches something of L and may not be quantified.) =item atomic operation When Democritus gave the word "atom" to the indivisible bits of matter, he meant literally something that could not be cut: I (not) + I (cuttable). An atomic operation is an action that can't be interrupted, not one forbidden in a nuclear-free zone. =item attribute A new feature that allows the declaration of L and L with modifiers as in C. Also, another name for an L of an L. =item autogeneration A feature of L of L, whereby the behavior of certain L can be reasonably deduced using more fundamental operators. This assumes that the overloaded operators will often have the same relationships as the regular operators. See L. =item autoincrement To add one to something automatically, hence the name of the C<++> operator. To instead subtract one from something automatically is known as an "autodecrement". =item autoload To load on demand. (Also called "lazy" loading.) Specifically, to call an L subroutine on behalf of an undefined subroutine. =item autosplit To split a string automatically, as the B<-a> L does when running under B<-p> or B<-n> in order to emulate L. (See also the L module, which has nothing to do with the B<-a> switch, but a lot to do with autoloading.) =item autovivification A Greco-Roman word meaning "to bring oneself to life". In Perl, storage locations (L) spontaneously generate themselves as needed, including the creation of any L values to point to the next level of storage. The assignment C<$a[5][5][5][5][5] = "quintet"> potentially creates five scalar storage locations, plus four references (in the first four scalar locations) pointing to four new anonymous arrays (to hold the last four scalar locations). But the point of autovivification is that you don't have to worry about it. =item AV Short for "array value", which refers to one of Perl's internal data types that holds an L. The L type is a subclass of L. =item awk Descriptive editing term--short for "awkward". Also coincidentally refers to a venerable text-processing language from which Perl derived some of its high-level ideas. =back =head2 B =over 4 =item backreference A substring L by a subpattern within unadorned parentheses in a L. Backslashed decimal numbers (C<\1>, C<\2>, etc.) later in the same pattern refer back to the corresponding subpattern in the current match. Outside the pattern, the numbered variables (C<$1>, C<$2>, etc.) continue to refer to these same values, as long as the pattern was the last successful match of the current dynamic scope. =item backtracking The practice of saying, "If I had to do it all over, I'd do it differently," and then actually going back and doing it all over differently. Mathematically speaking, it's returning from an unsuccessful recursion on a tree of possibilities. Perl backtracks when it attempts to match patterns with a L, and its earlier attempts don't pan out. See L. =item backward compatibility Means you can still run your old program because we didn't break any of the features or bugs it was relying on. =item bareword A word sufficiently ambiguous to be deemed illegal under L. In the absence of that stricture, a bareword is treated as if quotes were around it. =item base class A generic L type; that is, a L from which other, more specific classes are derived genetically by L. Also called a "superclass" by people who respect their ancestors. =item big-endian From Swift: someone who eats eggs big end first. Also used of computers that store the most significant L of a word at a lower byte address than the least significant byte. Often considered superior to little-endian machines. See also L. =item binary Having to do with numbers represented in base 2. That means there's basically two numbers, 0 and 1. Also used to describe a "non-text file", presumably because such a file makes full use of all the binary bits in its bytes. With the advent of L, this distinction, already suspect, loses even more of its meaning. =item binary operator An L that takes two L. =item bind To assign a specific L to a L. =item bit An integer in the range from 0 to 1, inclusive. The smallest possible unit of information storage. An eighth of a L or of a dollar. (The term "Pieces of Eight" comes from being able to split the old Spanish dollar into 8 bits, each of which still counted for money. That's why a 25-cent piece today is still "two bits".) =item bit shift The movement of bits left or right in a computer word, which has the effect of multiplying or dividing by a power of 2. =item bit string A sequence of L that is actually being thought of as a sequence of bits, for once. =item bless In corporate life, to grant official approval to a thing, as in, "The VP of Engineering has blessed our WebCruncher project." Similarly in Perl, to grant official approval to a L so that it can function as an L, such as a WebCruncher object. See L. =item block What a L does when it has to wait for something: "My process blocked waiting for the disk." As an unrelated noun, it refers to a large chunk of data, of a size that the L likes to deal with (normally a power of two such as 512 or 8192). Typically refers to a chunk of data that's coming from or going to a disk file. =item BLOCK A syntactic construct consisting of a sequence of Perl L that is delimited by braces. The C and C statements are defined in terms of L, for instance. Sometimes we also say "block" to mean a lexical scope; that is, a sequence of statements that act like a L, such as within an L or a file, even though the statements aren't delimited by braces. =item block buffering A method of making input and output efficient by passing one L at a time. By default, Perl does block buffering to disk files. See L and L. =item Boolean A value that is either L or L. =item Boolean context A special kind of L used in conditionals to decide whether the L returned by an expression is L or L. Does not evaluate as either a string or a number. See L. =item breakpoint A spot in your program where you've told the debugger to stop L so you can poke around and see whether anything is wrong yet. =item broadcast To send a L to multiple destinations simultaneously. =item BSD A psychoactive drug, popular in the 80s, probably developed at U. C. Berkeley or thereabouts. Similar in many ways to the prescription-only medication called "System V", but infinitely more useful. (Or, at least, more fun.) The full chemical name is "Berkeley Standard Distribution". =item bucket A location in a L containing (potentially) multiple entries whose keys "hash" to the same hash value according to its hash function. (As internal policy, you don't have to worry about it, unless you're into internals, or policy.) =item buffer A temporary holding location for data. L means that the data is passed on to its destination whenever the buffer is full. L means that it's passed on whenever a complete line is received. L means that it's passed every time you do a L command (or equivalent). If your output is unbuffered, the system processes it one byte at a time without the use of a holding area. This can be rather inefficient. =item built-in A L that is predefined in the language. Even when hidden by L, you can always get at a built-in function by L its name with the C pseudo-package. =item bundle A group of related modules on L. (Also, sometimes refers to a group of command-line switches grouped into one L.) =item byte A piece of data worth eight L in most places. =item bytecode A pidgin-like language spoken among 'droids when they don't wish to reveal their orientation (see L). Named after some similar languages spoken (for similar reasons) between compilers and interpreters in the late 20th century. These languages are characterized by representing everything as a non-architecture-dependent sequence of bytes. =back =head2 C =over 4 =item C A language beloved by many for its inside-out L definitions, inscrutable L rules, and heavy L of the function-call mechanism. (Well, actually, people first switched to C because they found lowercase identifiers easier to read than upper.) Perl is written in C, so it's not surprising that Perl borrowed a few ideas from it. =item C preprocessor The typical C compiler's first pass, which processes lines beginning with C<#> for conditional compilation and macro definition and does various manipulations of the program text based on the current definitions. Also known as I(1). =item call by reference An L-passing mechanism in which the L refer directly to the L, and the L can change the actual arguments by changing the formal arguments. That is, the formal argument is an L for the actual argument. See also L. =item call by value An L-passing mechanism in which the L refer to a copy of the L, and the L cannot change the actual arguments by changing the formal arguments. See also L. =item callback A L that you register with some other part of your program in the hope that the other part of your program will L your handler when some event of interest transpires. =item canonical Reduced to a standard form to facilitate comparison. =item capturing The use of parentheses around a L in a L to store the matched L as a L. (Captured strings are also returned as a list in L.) =item character A small integer representative of a unit of orthography. Historically, characters were usually stored as fixed-width integers (typically in a byte, or maybe two, depending on the character set), but with the advent of UTF-8, characters are often stored in a variable number of bytes depending on the size of the integer that represents the character. Perl manages this transparently for you, for the most part. =item character class A square-bracketed list of characters used in a L to indicate that any character of the set may occur at a given point. Loosely, any predefined set of characters so used. =item character property A predefined L matchable by the C<\p> L. Many standard properties are defined for L. =item circumfix operator An L that surrounds its L, like the angle operator, or parentheses, or a hug. =item class A user-defined L, implemented in Perl via a L that provides (either directly or by inheritance) L (that is, L) to handle L of the class (its L). See also L. =item class method A L whose L is a L name, not an L reference. A method associated with the class as a whole. =item client In networking, a L that initiates contact with a L process in order to exchange data and perhaps receive a service. =item cloister A L used to restrict the scope of a L. =item closure An L subroutine that, when a reference to it is generated at run time, keeps track of the identities of externally visible L even after those lexical variables have supposedly gone out of L. They're called "closures" because this sort of behavior gives mathematicians a sense of closure. =item cluster A parenthesized L used to group parts of a L into a single L. =item CODE The word returned by the L function when you apply it to a reference to a subroutine. See also L. =item code generator A system that writes code for you in a low-level language, such as code to implement the backend of a compiler. See L. =item code subpattern A L subpattern whose real purpose is to execute some Perl code, for example, the C<(?{...})> and C<(??{...})> subpatterns. =item collating sequence The order into which L sort. This is used by L comparison routines to decide, for example, where in this glossary to put "collating sequence". =item command In L programming, the syntactic combination of a program name and its arguments. More loosely, anything you type to a shell (a command interpreter) that starts it doing something. Even more loosely, a Perl L, which might start with a L and typically ends with a semicolon. =item command buffering A mechanism in Perl that lets you store up the output of each Perl L and then flush it out as a single request to the L. It's enabled by setting the C<$|> (C<$AUTOFLUSH>) variable to a true value. It's used when you don't want data sitting around not going where it's supposed to, which may happen because the default on a L or L is to use L. =item command name The name of the program currently executing, as typed on the command line. In C, the L name is passed to the program as the first command-line argument. In Perl, it comes in separately as C<$0>. =item command-line arguments The L you supply along with a program name when you tell a L to execute a L. These values are passed to a Perl program through C<@ARGV>. =item comment A remark that doesn't affect the meaning of the program. In Perl, a comment is introduced by a C<#> character and continues to the end of the line. =item compilation unit The L (or L, in the case of L) that is currently being compiled. =item compile phase Any time before Perl starts running your main program. See also L. Compile phase is mostly spent in L, but may also be spent in L when C blocks, L declarations, or constant subexpressions are being evaluated. The startup and import code of any L declaration is also run during compile phase. =item compile time The time when Perl is trying to make sense of your code, as opposed to when it thinks it knows what your code means and is merely trying to do what it thinks your code says to do, which is L. =item compiler Strictly speaking, a program that munches up another program and spits out yet another file containing the program in a "more executable" form, typically containing native machine instructions. The I program is not a compiler by this definition, but it does contain a kind of compiler that takes a program and turns it into a more executable form (L) within the I process itself, which the L then interprets. There are, however, extension L to get Perl to act more like a "real" compiler. See L. =item composer A "constructor" for a L that isn't really an L, like an anonymous array or a hash (or a sonata, for that matter). For example, a pair of braces acts as a composer for a hash, and a pair of brackets acts as a composer for an array. See L. =item concatenation The process of gluing one cat's nose to another cat's tail. Also, a similar operation on two L. =item conditional Something "iffy". See L. =item connection In telephony, the temporary electrical circuit between the caller's and the callee's phone. In networking, the same kind of temporary circuit between a L and a L. =item construct As a noun, a piece of syntax made up of smaller pieces. As a transitive verb, to create an L using a L. =item constructor Any L, instance L, or L that composes, initializes, blesses, and returns an L. Sometimes we use the term loosely to mean a L. =item context The surroundings, or environment. The context given by the surrounding code determines what kind of data a particular L is expected to return. The three primary contexts are L, L, and L. Scalar context is sometimes subdivided into L, L, L, and L. There's also a "don't care" scalar context (which is dealt with in Programming Perl, Third Edition, Chapter 2, "Bits and Pieces" if you care). =item continuation The treatment of more than one physical L as a single logical line. L lines are continued by putting a backslash before the L. Mail headers as defined by RFC 822 are continued by putting a space or tab I the newline. In general, lines in Perl do not need any form of continuation mark, because L (including newlines) is gleefully ignored. Usually. =item core dump The corpse of a L, in the form of a file left in the L of the process, usually as a result of certain kinds of fatal error. =item CPAN The Comprehensive Perl Archive Network. (See LsrcE... mean?>). =item cracker Someone who breaks security on computer systems. A cracker may be a true L or only a L. =item current package The L in which the current statement is compiled. Scan backwards in the text of your program through the current L or any enclosing lexical scopes till you find a package declaration. That's your current package name. =item current working directory See L. =item currently selected output channel The last L that was designated with L(C); L, if no filehandle has been selected. =item CV An internal "code value" typedef, holding a L. The L type is a subclass of L. =back =head2 D =over 4 =item dangling statement A bare, single L, without any braces, hanging off an C or C conditional. C allows them. Perl doesn't. =item data structure How your various pieces of data relate to each other and what shape they make when you put them all together, as in a rectangular table or a triangular-shaped tree. =item data type A set of possible values, together with all the operations that know how to deal with those values. For example, a numeric data type has a certain set of numbers that you can work with and various mathematical operations that you can do on the numbers but would make little sense on, say, a string such as C<"Kilroy">. Strings have their own operations, such as L. Compound types made of a number of smaller pieces generally have operations to compose and decompose them, and perhaps to rearrange them. L that model things in the real world often have operations that correspond to real activities. For instance, if you model an elevator, your elevator object might have an C L. =item datagram A packet of data, such as a L message, that (from the viewpoint of the programs involved) can be sent independently over the network. (In fact, all packets are sent independently at the L level, but L protocols such as L hide this from your program.) =item DBM Stands for "Data Base Management" routines, a set of routines that emulate an L using disk files. The routines use a dynamic hashing scheme to locate any entry with only two disk accesses. DBM files allow a Perl program to keep a persistent L across multiple invocations. You can L your hash variables to various DBM implementations--see L and L. =item declaration An L that states something exists and perhaps describes what it's like, without giving any commitment as to how or where you'll use it. A declaration is like the part of your recipe that says, "two cups flour, one large egg, four or five tadpoles..." See L for its opposite. Note that some declarations also function as statements. Subroutine declarations also act as definitions if a body is supplied. =item decrement To subtract a value from a variable, as in "decrement C<$x>" (meaning to remove 1 from its value) or "decrement C<$x> by 3". =item default A L chosen for you if you don't supply a value of your own. =item defined Having a meaning. Perl thinks that some of the things people try to do are devoid of meaning, in particular, making use of variables that have never been given a L and performing certain operations on data that isn't there. For example, if you try to read data past the end of a file, Perl will hand you back an undefined value. See also L and L. =item delimiter A L or L that sets bounds to an arbitrarily-sized textual object, not to be confused with a L or L. "To delimit" really just means "to surround" or "to enclose" (like these parentheses are doing). =item deprecated modules and features Deprecated modules and features are those which were part of a stable release, but later found to be subtly flawed, and which should be avoided. They are subject to removal and/or bug-incompatible reimplementation in the next major release (but they will be preserved through maintenance releases). Deprecation warnings are issued under B<-w> or C, and notices are found in Ls, as well as various other PODs. Coding practices that misuse features, such as C, can also be deprecated. =item dereference A fancy computer science term meaning "to follow a L to what it points to". The "de" part of it refers to the fact that you're taking away one level of L. =item derived class A L that defines some of its L in terms of a more generic class, called a L. Note that classes aren't classified exclusively into base classes or derived classes: a class can function as both a derived class and a base class simultaneously, which is kind of classy. =item descriptor See L. =item destroy To deallocate the memory of a L (first triggering its C method, if it has one). =item destructor A special L that is called when an L is thinking about L itself. A Perl program's C method doesn't do the actual destruction; Perl just L the method in case the L wants to do any associated cleanup. =item device A whiz-bang hardware gizmo (like a disk or tape drive or a modem or a joystick or a mouse) attached to your computer, that the L tries to make look like a L (or a bunch of files). Under Unix, these fake files tend to live in the I directory. =item directive A L directive. See L. =item directory A special file that contains other files. Some L call these "folders", "drawers", or "catalogs". =item directory handle A name that represents a particular instance of opening a directory to read it, until you close it. See the L function. =item dispatch To send something to its correct destination. Often used metaphorically to indicate a transfer of programmatic control to a destination selected algorithmically, often by lookup in a table of function L or, in the case of object L, by traversing the inheritance tree looking for the most specific definition for the method. =item distribution A standard, bundled release of a system of software. The default usage implies source code is included. If that is not the case, it will be called a "binary-only" distribution. =item (to be) dropped modules When Perl 5 was first released (see L), several modules were included, which have now fallen out of common use. It has been suggested that these modules should be removed, since the distribution became rather large, and the common criterion for new module additions is now limited to modules that help to build, test, and extend perl itself. Furthermore, the CPAN (which didn't exist at the time of Perl 5.0) can become the new home of dropped modules. Dropping modules is currently not an option, but further developments may clear the last barriers. =item dweomer An enchantment, illusion, phantasm, or jugglery. Said when Perl's magical L effects don't do what you expect, but rather seem to be the product of arcane dweomercraft, sorcery, or wonder working. [From Old English] =item dwimmer DWIM is an acronym for "Do What I Mean", the principle that something should just do what you want it to do without an undue amount of fuss. A bit of code that does "dwimming" is a "dwimmer". Dwimming can require a great deal of behind-the-scenes magic, which (if it doesn't stay properly behind the scenes) is called a L instead. =item dynamic scoping Dynamic scoping works over a dynamic scope, making variables visible throughout the rest of the L in which they are first used and in any L that are called by the rest of the block. Dynamically scoped variables can have their values temporarily changed (and implicitly restored later) by a L operator. (Compare L.) Used more loosely to mean how a subroutine that is in the middle of calling another subroutine "contains" that subroutine at L. =back =head2 E =over 4 =item eclectic Derived from many sources. Some would say I many. =item element A basic building block. When you're talking about an L, it's one of the items that make up the array. =item embedding When something is contained in something else, particularly when that might be considered surprising: "I've embedded a complete Perl interpreter in my editor!" =item empty subclass test The notion that an empty L should behave exactly like its L. =item en passant When you change a L as it is being copied. [From French, "in passing", as in the exotic pawn-capturing maneuver in chess.] =item encapsulation The veil of abstraction separating the L from the L (whether enforced or not), which mandates that all access to an L's state be through L alone. =item endian See L and L. =item environment The collective set of L your L inherits from its parent. Accessed via C<%ENV>. =item environment variable A mechanism by which some high-level agent such as a user can pass its preferences down to its future offspring (child L, grandchild processes, great-grandchild processes, and so on). Each environment variable is a L/L pair, like one entry in a L. =item EOF End of File. Sometimes used metaphorically as the terminating string of a L. =item errno The error number returned by a L when it fails. Perl refers to the error by the name C<$!> (or C<$OS_ERROR> if you use the English module). =item error See L or L. =item escape sequence See L. =item exception A fancy term for an error. See L. =item exception handling The way a program responds to an error. The exception handling mechanism in Perl is the L operator. =item exec To throw away the current L's program and replace it with another without exiting the process or relinquishing any resources held (apart from the old memory image). =item executable file A L that is specially marked to tell the L that it's okay to run this file as a program. Usually shortened to "executable". =item execute To run a L or L. (Has nothing to do with the L built-in, unless you're trying to run a L.) =item execute bit The special mark that tells the operating system it can run this program. There are actually three execute bits under Unix, and which bit gets used depends on whether you own the file singularly, collectively, or not at all. =item exit status See L. =item export To make symbols from a L available for L by other modules. =item expression Anything you can legally say in a spot where a L is required. Typically composed of L, L, L, L, and L calls, not necessarily in that order. =item extension A Perl module that also pulls in compiled C or C++ code. More generally, any experimental option that can be compiled into Perl, such as multithreading. =back =head2 F =over 4 =item false In Perl, any value that would look like C<""> or C<"0"> if evaluated in a string context. Since undefined values evaluate to C<"">, all undefined values are false, but not all false values are undefined. =item FAQ Frequently Asked Question (although not necessarily frequently answered, especially if the answer appears in the Perl FAQ shipped standard with Perl). =item fatal error An uncaught L, which causes termination of the L after printing a message on your L stream. Errors that happen inside an L are not fatal. Instead, the L terminates after placing the exception message in the C<$@> (C<$EVAL_ERROR>) variable. You can try to provoke a fatal error with the L operator (known as throwing or raising an exception), but this may be caught by a dynamically enclosing L. If not caught, the L becomes a fatal error. =item field A single piece of numeric or string data that is part of a longer L, L, or L. Variable-width fields are usually split up by L (so use L to extract the fields), while fixed-width fields are usually at fixed positions (so use L). L are also known as fields. =item FIFO First In, First Out. See also L. Also, a nickname for a L. =item file A named collection of data, usually stored on disk in a L in a L. Roughly like a document, if you're into office metaphors. In modern filesystems, you can actually give a file more than one name. Some files have special properties, like directories and devices. =item file descriptor The little number the L uses to keep track of which opened L you're talking about. Perl hides the file descriptor inside a LO> stream and then attaches the stream to a L. =item file test operator A built-in unary operator that you use to determine whether something is L about a file, such as C<-o $filename> to test whether you're the owner of the file. =item fileglob A "wildcard" match on L. See the L function. =item filehandle An identifier (not necessarily related to the real name of a file) that represents a particular instance of opening a file until you close it. If you're going to open and close several different files in succession, it's fine to open each of them with the same filehandle, so you don't have to write out separate code to process each file. =item filename One name for a file. This name is listed in a L, and you can use it in an L to tell the L exactly which file you want to open, and associate the file with a L which will carry the subsequent identity of that file in your program, until you close it. =item filesystem A set of L and L residing on a partition of the disk. Sometimes known as a "partition". You can change the file's name or even move a file around from directory to directory within a filesystem without actually moving the file itself, at least under Unix. =item filter A program designed to take a L of input and transform it into a stream of output. =item flag We tend to avoid this term because it means so many things. It may mean a command-line L that takes no argument itself (such as Perl's B<-n> and B<-p> flags) or, less frequently, a single-bit indicator (such as the C and C flags used in L). =item floating point A method of storing numbers in "scientific notation", such that the precision of the number is independent of its magnitude (the decimal point "floats"). Perl does its numeric work with floating-point numbers (sometimes called "floats"), when it can't get away with using L. Floating-point numbers are mere approximations of real numbers. =item flush The act of emptying a L, often before it's full. =item FMTEYEWTK Far More Than Everything You Ever Wanted To Know. An exhaustive treatise on one narrow topic, something of a super-L. See Tom for far more. =item fork To create a child L identical to the parent process at its moment of conception, at least until it gets ideas of its own. A thread with protected memory. =item formal arguments The generic names by which a L knows its L. In many languages, formal arguments are always given individual names, but in Perl, the formal arguments are just the elements of an array. The formal arguments to a Perl program are C<$ARGV[0]>, C<$ARGV[1]>, and so on. Similarly, the formal arguments to a Perl subroutine are C<$_[0]>, C<$_[1]>, and so on. You may give the arguments individual names by assigning the values to a L list. See also L. =item format A specification of how many spaces and digits and things to put somewhere so that whatever you're printing comes out nice and pretty. =item freely available Means you don't have to pay money to get it, but the copyright on it may still belong to someone else (like Larry). =item freely redistributable Means you're not in legal trouble if you give a bootleg copy of it to your friends and we find out about it. In fact, we'd rather you gave a copy to all your friends. =item freeware Historically, any software that you give away, particularly if you make the source code available as well. Now often called C. Recently there has been a trend to use the term in contradistinction to L, to refer only to free software released under the Free Software Foundation's GPL (General Public License), but this is difficult to justify etymologically. =item function Mathematically, a mapping of each of a set of input values to a particular output value. In computers, refers to a L or L that returns a L. It may or may not have input values (called L). =item funny character Someone like Larry, or one of his peculiar friends. Also refers to the strange prefixes that Perl requires as noun markers on its variables. =item garbage collection A misnamed feature--it should be called, "expecting your mother to pick up after you". Strictly speaking, Perl doesn't do this, but it relies on a reference-counting mechanism to keep things tidy. However, we rarely speak strictly and will often refer to the reference-counting scheme as a form of garbage collection. (If it's any comfort, when your interpreter exits, a "real" garbage collector runs to make sure everything is cleaned up if you've been messy with circular references and such.) =back =head2 G =over 4 =item GID Group ID--in Unix, the numeric group ID that the L uses to identify you and members of your L. =item glob Strictly, the shell's C<*> character, which will match a "glob" of characters when you're trying to generate a list of filenames. Loosely, the act of using globs and similar symbols to do pattern matching. See also L and L. =item global Something you can see from anywhere, usually used of L and L that are visible everywhere in your program. In Perl, only certain special variables are truly global--most variables (and all subroutines) exist only in the current L. Global variables can be declared with L. See L. =item global destruction The L of globals (and the running of any associated object destructors) that takes place when a Perl L is being shut down. Global destruction should not be confused with the Apocalypse, except perhaps when it should. =item glue language A language such as Perl that is good at hooking things together that weren't intended to be hooked together. =item granularity The size of the pieces you're dealing with, mentally speaking. =item greedy A L whose L wants to match as many things as possible. =item grep Originally from the old Unix editor command for "Globally search for a Regular Expression and Print it", now used in the general sense of any kind of search, especially text searches. Perl has a built-in L function that searches a list for elements matching any given criterion, whereas the I(1) program searches for lines matching a L in one or more files. =item group A set of users of which you are a member. In some operating systems (like Unix), you can give certain file access permissions to other members of your group. =item GV An internal "glob value" typedef, holding a L. The L type is a subclass of L. =back =head2 H =over 4 =item hacker Someone who is brilliantly persistent in solving technical problems, whether these involve golfing, fighting orcs, or programming. Hacker is a neutral term, morally speaking. Good hackers are not to be confused with evil L or clueless L