This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
utf8.c: Fix comment
[perl5.git] / pod / perldata.pod
CommitLineData
a0d0e21e
LW
1=head1 NAME
2
cb1a09d0 3perldata - Perl data types
a0d0e21e
LW
4
5=head1 DESCRIPTION
6
7=head2 Variable names
d74e8afc 8X<variable, name> X<variable name> X<data type> X<type>
a0d0e21e 9
d55a8828 10Perl has three built-in data types: scalars, arrays of scalars, and
692ef166
SF
11associative arrays of scalars, known as "hashes". A scalar is a
12single string (of any size, limited only by the available memory),
13number, or a reference to something (which will be discussed
14in L<perlref>). Normal arrays are ordered lists of scalars indexed
15by number, starting with 0. Hashes are unordered collections of scalar
16values indexed by their associated string key.
a0d0e21e 17
d55a8828 18Values are usually referred to by name, or through a named reference.
b88cefa9 19The first character of the name tells you to what sort of data
20structure it refers. The rest of the name tells you the particular
d55a8828
TC
21value to which it refers. Usually this name is a single I<identifier>,
22that is, a string beginning with a letter or underscore, and
23containing letters, underscores, and digits. In some cases, it may
24be a chain of identifiers, separated by C<::> (or by the slightly
25archaic C<'>); all but the last are interpreted as names of packages,
26to locate the namespace in which to look up the final identifier
32833930
BF
27(see L<perlmod/Packages> for details). For a more in-depth discussion
28on identifiers, see L<Identifier parsing>. It's possible to
29substitute for a simple identifier, an expression that produces a reference
d55a8828
TC
30to the value at runtime. This is described in more detail below
31and in L<perlref>.
d74e8afc 32X<identifier>
d55a8828
TC
33
34Perl also has its own built-in variables whose names don't follow
35these rules. They have strange names so they don't accidentally
36collide with one of your normal variables. Strings that match
37parenthesized parts of a regular expression are saved under names
38containing only digits after the C<$> (see L<perlop> and L<perlre>).
39In addition, several special variables that provide windows into
ce4793f1
KW
40the inner working of Perl have names containing punctuation characters.
41These are documented in L<perlvar>.
d74e8afc 42X<variable, built-in>
d55a8828
TC
43
44Scalar values are always named with '$', even when referring to a
45scalar that is part of an array or a hash. The '$' symbol works
46semantically like the English word "the" in that it indicates a
47single value is expected.
d74e8afc 48X<scalar>
a0d0e21e
LW
49
50 $days # the simple scalar value "days"
51 $days[28] # the 29th element of array @days
52 $days{'Feb'} # the 'Feb' value from hash %days
53 $#days # the last index of array @days
54
d55a8828 55Entire arrays (and slices of arrays and hashes) are denoted by '@',
3921068c 56which works much as the word "these" or "those" does in English,
d55a8828 57in that it indicates multiple values are expected.
d74e8afc 58X<array>
a0d0e21e
LW
59
60 @days # ($days[0], $days[1],... $days[n])
d55a8828 61 @days[3,4,5] # same as ($days[3],$days[4],$days[5])
a0d0e21e
LW
62 @days{'a','c'} # same as ($days{'a'},$days{'c'})
63
d55a8828 64Entire hashes are denoted by '%':
d74e8afc 65X<hash>
a0d0e21e
LW
66
67 %days # (key1, val1, key2, val2 ...)
68
d55a8828
TC
69In addition, subroutines are named with an initial '&', though this
70is optional when unambiguous, just as the word "do" is often redundant
71in English. Symbol table entries can be named with an initial '*',
72but you don't really care about that yet (if ever :-).
73
74Every variable type has its own namespace, as do several
75non-variable identifiers. This means that you can, without fear
76of conflict, use the same name for a scalar variable, an array, or
77a hash--or, for that matter, for a filehandle, a directory handle, a
78subroutine name, a format name, or a label. This means that $foo
79and @foo are two different variables. It also means that C<$foo[1]>
80is a part of @foo, not a part of $foo. This may seem a bit weird,
81but that's okay, because it is weird.
d74e8afc 82X<namespace>
d55a8828
TC
83
84Because variable references always start with '$', '@', or '%', the
85"reserved" words aren't in fact reserved with respect to variable
86names. They I<are> reserved with respect to labels and filehandles,
87however, which don't have an initial special character. You can't
88have a filehandle named "log", for instance. Hint: you could say
89C<open(LOG,'logfile')> rather than C<open(log,'logfile')>. Using
90uppercase filehandles also improves readability and protects you
91from conflict with future reserved words. Case I<is> significant--"FOO",
92"Foo", and "foo" are all different names. Names that start with a
93letter or underscore may also contain digits and underscores.
d74e8afc
ITB
94X<identifier, case sensitivity>
95X<case>
a0d0e21e
LW
96
97It is possible to replace such an alphanumeric name with an expression
d55a8828 98that returns a reference to the appropriate type. For a description
a0d0e21e
LW
99of this, see L<perlref>.
100
5f05dabc 101Names that start with a digit may contain only more digits. Names
ce4793f1
KW
102that do not start with a letter, underscore, digit or a caret are
103limited to one character, e.g., C<$%> or
9539f610
RGS
104C<$$>. (Most of these one character names have a predefined
105significance to Perl. For instance, C<$$> is the current process
ce4793f1 106id. And all such names are reserved for Perl's possible use.)
a0d0e21e 107
32833930
BF
108=head2 Identifier parsing
109X<identifiers>
110
111Up until Perl 5.18, the actual rules of what a valid identifier
112was were a bit fuzzy. However, in general, anything defined here should
113work on previous versions of Perl, while the opposite -- edge cases
114that work in previous versions, but aren't defined here -- probably
115won't work on newer versions.
116As an important side note, please note that the following only applies
117to bareword identifiers as found in Perl source code, not identifiers
118introduced through symbolic references, which have much fewer
119restrictions.
120If working under the effect of the C<use utf8;> pragma, the following
121rules apply:
122
9c1129c7
KW
123 / (?[ ( \p{Word} & \p{XID_Start} ) + [_] ])
124 (?[ ( \p{Word} & \p{XID_Continue} ) ]) * /x
125
126That is, a "start" character followed by any number of "continue"
127characters. Perl requires every character in an identifier to also
128match C<\w> (this prevents some problematic cases); and Perl
129additionally accepts identfier names beginning with an underscore.
32833930
BF
130
131If not under C<use utf8>, the source is treated as ASCII + 128 extra
ce4793f1 132generic characters, and identifiers should match
32833930
BF
133
134 / (?aa) (?!\d) \w+ /x
135
136That is, any word character in the ASCII range, as long as the first
137character is not a digit.
138
139There are two package separators in Perl: A double colon (C<::>) and a single
140quote (C<'>). Normal identifiers can start or end with a double colon, and
141can contain several parts delimited by double colons.
142Single quotes have similar rules, but with the exception that they are not
143legal at the end of an identifier: That is, C<$'foo> and C<$foo'bar> are
1d268002 144legal, but C<$foo'bar'> is not.
32833930 145
1d268002 146Additionally, if the identifier is preceded by a sigil --
32833930
BF
147that is, if the identifier is part of a variable name -- it
148may optionally be enclosed in braces.
149
150While you can mix double colons with singles quotes, the quotes must come
151after the colons: C<$::::'foo> and C<$foo::'bar> are legal, but C<$::'::foo>
152and C<$foo'::bar> are not.
153
154Put together, a grammar to match a basic identifier becomes
155
156 /
157 (?(DEFINE)
158 (?<variable>
159 (?&sigil)
160 (?:
161 (?&normal_identifier)
162 | \{ \s* (?&normal_identifier) \s* \}
163 )
164 )
165 (?<normal_identifier>
166 (?: :: )* '?
167 (?&basic_identifier)
168 (?: (?= (?: :: )+ '? | (?: :: )* ' ) (?&normal_identifier) )?
169 (?: :: )*
170 )
171 (?<basic_identifier>
172 # is use utf8 on?
173 (?(?{ (caller(0))[8] & $utf8::hint_bits })
4c106081 174 (?&Perl_XIDS) (?&Perl_XIDC)*
32833930
BF
175 | (?aa) (?!\d) \w+
176 )
177 )
178 (?<sigil> [&*\$\@\%])
179 (?<Perl_XIDS> (?[ ( \p{Word} & \p{XID_Start} ) + [_] ]) )
4c106081 180 (?<Perl_XIDC> (?[ \p{Word} & \p{XID_Continue} ]) )
32833930
BF
181 )
182 /x
183
184Meanwhile, special identifiers don't follow the above rules; For the most
185part, all of the identifiers in this category have a special meaning given
186by Perl. Because they have special parsing rules, these generally can't be
ce4793f1 187fully-qualified. They come in six forms (but don't use forms 5 and 6):
32833930
BF
188
189=over
190
ce4793f1 191=item 1.
42327f06
KW
192
193A sigil, followed solely by digits matching C<\p{POSIX_Digit}>, like
194C<$0>, C<$1>, or C<$10000>.
195
ce4793f1 196=item 2.
42327f06 197
ce4793f1
KW
198A sigil followed by a single character matching the C<\p{POSIX_Punct}>
199property, like C<$!> or C<%+>, except the character C<"{"> doesn't work.
42327f06 200
ce4793f1 201=item 3.
42327f06 202
ce4793f1
KW
203A sigil, followed by a caret and any one of the characters
204C<[][A-Z^_?\]>, like C<$^V> or C<$^]>.
42327f06 205
ce4793f1
KW
206=item 4.
207
208Similar to the above, a sigil, followed by bareword text in braces,
209where the first character is a caret. The next character is any one of
210the characters C<[][A-Z^_?\]>, followed by ASCII word characters. An
211example is C<${^GLOBAL_PHASE}>.
212
213=item 5.
214
215A sigil, followed by any single character in the range C<[\x80-\xFF]>
216when not under C<S<"use utf8">>. (Under C<S<"use utf8">>, the normal
217identifier rules given earlier in this section apply.) Use of
218non-graphic characters (the C1 controls, the NO-BREAK SPACE, and the
219SOFT HYPHEN) is deprecated and will be forbidden in a future Perl
220version. The use of the other characters is unwise, as these are all
221reserved to have special meaning to Perl, and none of them currently
222do have special meaning, though this could change without notice.
223
224Note that an implication of this form is that there are identifiers only
225legal under C<S<"use utf8">>, and vice-versa, for example the identifier
226C<$E<233>tat> is legal under C<S<"use utf8">>, but is otherwise
227considered to be the single character variable C<$E<233>> followed by
228the bareword C<"tat">, the combination of which is a syntax error.
229
230=item 6.
231
232This is a combination of the previous two forms. It is valid only when
233not under S<C<"use utf8">> (normal identifier rules apply when under
234S<C<"use utf8">>). The form is a sigil, followed by text in braces,
235where the first character is any one of the characters in the range
236C<[\x80-\xFF]> followed by ASCII word characters up to the trailing
237brace.
238
239The same caveats as the previous form apply: The non-graphic characters
240are deprecated, it is unwise to use this form at all, and utf8ness makes
241a big difference.
32833930
BF
242
243=back
244
ce4793f1
KW
245Prior to Perl v5.24, non-graphical ASCII control characters were also
246allowed in some situations; this had been deprecated since v5.20.
b29f65fc 247
a0d0e21e 248=head2 Context
d74e8afc 249X<context> X<scalar context> X<list context>
a0d0e21e
LW
250
251The interpretation of operations and values in Perl sometimes depends
252on the requirements of the context around the operation or value.
d55a8828 253There are two major contexts: list and scalar. Certain operations
a0d0e21e 254return list values in contexts wanting a list, and scalar values
d55a8828
TC
255otherwise. If this is true of an operation it will be mentioned in
256the documentation for that operation. In other words, Perl overloads
a0d0e21e 257certain operations based on whether the expected return value is
d55a8828
TC
258singular or plural. Some words in English work this way, like "fish"
259and "sheep".
a0d0e21e
LW
260
261In a reciprocal fashion, an operation provides either a scalar or a
262list context to each of its arguments. For example, if you say
263
264 int( <STDIN> )
265
c47ff5f1 266the integer operation provides scalar context for the <>
a0d0e21e
LW
267operator, which responds by reading one line from STDIN and passing it
268back to the integer operation, which will then find the integer value
269of that line and return that. If, on the other hand, you say
270
271 sort( <STDIN> )
272
c47ff5f1 273then the sort operation provides list context for <>, which
a0d0e21e
LW
274will proceed to read every line available up to the end of file, and
275pass that list of lines back to the sort routine, which will then
276sort those lines and return them as a list to whatever the context
277of the sort was.
278
d55a8828
TC
279Assignment is a little bit special in that it uses its left argument
280to determine the context for the right argument. Assignment to a
281scalar evaluates the right-hand side in scalar context, while
282assignment to an array or hash evaluates the righthand side in list
283context. Assignment to a list (or slice, which is just a list
3921068c 284anyway) also evaluates the right-hand side in list context.
d55a8828 285
9f1b1f2d
GS
286When you use the C<use warnings> pragma or Perl's B<-w> command-line
287option, you may see warnings
d55a8828
TC
288about useless uses of constants or functions in "void context".
289Void context just means the value has been discarded, such as a
290statement containing only C<"fred";> or C<getpwuid(0);>. It still
291counts as scalar context for functions that care whether or not
292they're being called in list context.
293
294User-defined subroutines may choose to care whether they are being
295called in a void, scalar, or list context. Most subroutines do not
296need to bother, though. That's because both scalars and lists are
297automatically interpolated into lists. See L<perlfunc/wantarray>
298for how you would dynamically discern your function's calling
299context.
a0d0e21e
LW
300
301=head2 Scalar values
d74e8afc 302X<scalar> X<number> X<string> X<reference>
a0d0e21e 303
d55a8828
TC
304All data in Perl is a scalar, an array of scalars, or a hash of
305scalars. A scalar may contain one single value in any of three
306different flavors: a number, a string, or a reference. In general,
307conversion from one form to another is transparent. Although a
308scalar may not directly hold multiple values, it may contain a
309reference to an array or hash which in turn contains multiple values.
310
311Scalars aren't necessarily one thing or another. There's no place
312to declare a scalar variable to be of type "string", type "number",
313type "reference", or anything else. Because of the automatic
314conversion of scalars, operations that return scalars don't need
315to care (and in fact, cannot care) whether their caller is looking
316for a string, a number, or a reference. Perl is a contextually
317polymorphic language whose scalars can be strings, numbers, or
318references (which includes objects). Although strings and numbers
319are considered pretty much the same thing for nearly all purposes,
320references are strongly-typed, uncastable pointers with builtin
321reference-counting and destructor invocation.
a0d0e21e 322
32860eee
FC
323A scalar value is interpreted as FALSE in the Boolean sense
324if it is undefined, the null string or the number 0 (or its
325string equivalent, "0"), and TRUE if it is anything else. The
d55a8828
TC
326Boolean context is just a special kind of scalar context where no
327conversion to a string or a number is ever performed.
d74e8afc 328X<boolean> X<bool> X<true> X<false> X<truth>
d55a8828
TC
329
330There are actually two varieties of null strings (sometimes referred
331to as "empty" strings), a defined one and an undefined one. The
332defined version is just a string of length zero, such as C<"">.
333The undefined version is the value that indicates that there is
334no real value for something, such as when there was an error, or
335at end of file, or when you refer to an uninitialized variable or
336element of an array or hash. Although in early versions of Perl,
337an undefined scalar could become defined when first used in a
338place expecting a defined value, this no longer happens except for
339rare cases of autovivification as explained in L<perlref>. You can
340use the defined() operator to determine whether a scalar value is
341defined (this has no meaning on arrays or hashes), and the undef()
342operator to produce an undefined value.
d74e8afc 343X<defined> X<undefined> X<undef> X<null> X<string, null>
d55a8828
TC
344
345To find out whether a given string is a valid non-zero number, it's
346sometimes enough to test it against both numeric 0 and also lexical
692ef166
SF
347"0" (although this will cause noises if warnings are on). That's
348because strings that aren't numbers count as 0, just as they do in B<awk>:
4633a7c4
LW
349
350 if ($str == 0 && $str ne "0") {
351 warn "That doesn't look like a number";
54310121 352 }
4633a7c4 353
d55a8828
TC
354That method may be best because otherwise you won't treat IEEE
355notations like C<NaN> or C<Infinity> properly. At other times, you
356might prefer to determine whether string data can be used numerically
357by calling the POSIX::strtod() function or by inspecting your string
358with a regular expression (as documented in L<perlre>).
cb1a09d0
AD
359
360 warn "has nondigits" if /\D/;
5a964f20
TC
361 warn "not a natural number" unless /^\d+$/; # rejects -3
362 warn "not an integer" unless /^-?\d+$/; # rejects +3
363 warn "not an integer" unless /^[+-]?\d+$/;
364 warn "not a decimal number" unless /^-?\d+\.?\d*$/; # rejects .2
365 warn "not a decimal number" unless /^-?(?:\d+(?:\.\d*)?|\.\d+)$/;
54310121 366 warn "not a C float"
cb1a09d0
AD
367 unless /^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/;
368
d55a8828 369The length of an array is a scalar value. You may find the length
fc518ee5
JA
370of array @days by evaluating C<$#days>, as in B<csh>. However, this
371isn't the length of the array; it's the subscript of the last element,
372which is a different value since there is ordinarily a 0th element.
d55a8828
TC
373Assigning to C<$#days> actually changes the length of the array.
374Shortening an array this way destroys intervening values. Lengthening
375an array that was previously shortened does not recover values
0568eccd 376that were in those elements.
d74e8afc 377X<$#> X<array, length>
d55a8828 378
210b36aa 379You can also gain some minuscule measure of efficiency by pre-extending
d55a8828
TC
380an array that is going to get big. You can also extend an array
381by assigning to an element that is off the end of the array. You
19799a22 382can truncate an array down to nothing by assigning the null list
d55a8828 383() to it. The following are equivalent:
a0d0e21e 384
84f709e7 385 @whatever = ();
3e3baf6d 386 $#whatever = -1;
a0d0e21e 387
d55a8828
TC
388If you evaluate an array in scalar context, it returns the length
389of the array. (Note that this is not true of lists, which return
390the last value, like the C comma operator, nor of built-in functions,
391which return whatever they feel like returning.) The following is
392always true:
d74e8afc 393X<array, length>
a0d0e21e 394
a0d0e21e
LW
395 scalar(@whatever) == $#whatever + 1;
396
d55a8828
TC
397Some programmers choose to use an explicit conversion so as to
398leave nothing to doubt:
4633a7c4
LW
399
400 $element_count = scalar(@whatever);
401
d55a8828
TC
402If you evaluate a hash in scalar context, it returns false if the
403hash is empty. If there are any key/value pairs, it returns true;
404more precisely, the value returned is a string consisting of the
405number of used buckets and the number of allocated buckets, separated
406by a slash. This is pretty much useful only to find out whether
407Perl's internal hashing algorithm is performing poorly on your data
408set. For example, you stick 10,000 things in a hash, but evaluating
409%HASH in scalar context reveals C<"1/16">, which means only one out
410of sixteen buckets has been touched, and presumably contains all
126c71c8 41110,000 of your items. This isn't supposed to happen. If a tied hash
6e4c4703
DM
412is evaluated in scalar context, the C<SCALAR> method is called (with a
413fallback to C<FIRSTKEY>).
d74e8afc 414X<hash, scalar context> X<hash, bucket> X<bucket>
a0d0e21e 415
5a964f20 416You can preallocate space for a hash by assigning to the keys() function.
65841adf 417This rounds up the allocated buckets to the next power of two:
5a964f20
TC
418
419 keys(%users) = 1000; # allocate 1024 buckets
420
a0d0e21e 421=head2 Scalar value constructors
d74e8afc 422X<scalar, literal> X<scalar, constant>
a0d0e21e 423
d55a8828 424Numeric literals are specified in any of the following floating point or
a0d0e21e
LW
425integer formats:
426
a94ee3a1
KW
427 12345
428 12345.67
429 .23E-10 # a very small number
430 3.14_15_92 # a very important number
431 4_294_967_296 # underscore for legibility
432 0xff # hex
433 0xdead_beef # more hex
434 0377 # octal (only numbers, begins with 0)
435 0b011011 # binary
436 0x1.999ap-4 # hexadecimal floating point (the 'p' is required)
a0d0e21e 437
d4ced10d 438You are allowed to use underscores (underbars) in numeric literals
d823de2e
KW
439between digits for legibility (but not multiple underscores in a row:
440C<23__500> is not legal; C<23_500> is).
441You could, for example, group binary
d4ced10d
JH
442digits by threes (as for a Unix-style mode argument such as 0b110_100_100)
443or by fours (to represent nibbles, as in 0b1010_0110) or in other groups.
d74e8afc 444X<number, literal>
1d277562 445
55497cff 446String literals are usually delimited by either single or double
d55a8828
TC
447quotes. They work much like quotes in the standard Unix shells:
448double-quoted string literals are subject to backslash and variable
19799a22
GS
449substitution; single-quoted strings are not (except for C<\'> and
450C<\\>). The usual C-style backslash rules apply for making
d55a8828 451characters such as newline, tab, etc., as well as some more exotic
4a4eefd0 452forms. See L<perlop/"Quote and Quote-like Operators"> for a list.
d74e8afc 453X<string, literal>
d55a8828
TC
454
455Hexadecimal, octal, or binary, representations in string literals
456(e.g. '0xff') are not automatically converted to their integer
457representation. The hex() and oct() functions make these conversions
458for you. See L<perlfunc/hex> and L<perlfunc/oct> for more details.
68dc0745 459
61e61fbc
JH
460Hexadecimal floating point can start just like a hexadecimal literal,
461and it can be followed by an optional fractional hexadecimal part,
462but it must be followed by C<p>, an optional sign, and a power of two.
463The format is useful for accurately presenting floating point values,
464avoiding conversions to or from decimal floating point, and therefore
465avoiding possible loss in precision. Notice that while most current
60aaad76
JH
466platforms use the 64-bit IEEE 754 floating point, not all do. Another
467potential source of (low-order) differences are the floating point
468rounding modes, which can differ between CPUs, operating systems,
469and compilers, and which Perl doesn't control.
61e61fbc 470
5f05dabc 471You can also embed newlines directly in your strings, i.e., they can end
a0d0e21e
LW
472on a different line than they begin. This is nice, but if you forget
473your trailing quote, the error will not be reported until Perl finds
474another line containing the quote character, which may be much further
475on in the script. Variable substitution inside strings is limited to
d55a8828 476scalar variables, arrays, and array or hash slices. (In other words,
b88cefa9 477names beginning with $ or @, followed by an optional bracketed
a0d0e21e 478expression as a subscript.) The following code segment prints out "The
184e9718 479price is $Z<>100."
d74e8afc 480X<interpolation>
a0d0e21e 481
692ef166
SF
482 $Price = '$100'; # not interpolated
483 print "The price is $Price.\n"; # interpolated
484
485There is no double interpolation in Perl, so the C<$100> is left as is.
a0d0e21e 486
7e4353e9
RGS
487By default floating point numbers substituted inside strings use the
488dot (".") as the decimal separator. If C<use locale> is in effect,
489and POSIX::setlocale() has been called, the character used for the
490decimal separator is affected by the LC_NUMERIC locale.
491See L<perllocale> and L<POSIX>.
492
d55a8828 493As in some shells, you can enclose the variable name in braces to
f1cbbd6e
GS
494disambiguate it from following alphanumerics (and underscores).
495You must also do
d55a8828
TC
496this when interpolating a variable into a string to separate the
497variable name from a following double-colon or an apostrophe, since
498these would be otherwise treated as a package separator:
d74e8afc 499X<interpolation>
d55a8828 500
84f709e7 501 $who = "Larry";
d55a8828
TC
502 print PASSWD "${who}::0:0:Superuser:/:/bin/perl\n";
503 print "We use ${who}speak when ${who}'s here.\n";
504
505Without the braces, Perl would have looked for a $whospeak, a
506C<$who::0>, and a C<$who's> variable. The last two would be the
507$0 and the $s variables in the (presumably) non-existent package
508C<who>.
509
34a2706e 510In fact, a simple identifier within such curlies is forced to be
b4e2e1dd 511a string, and likewise within a hash subscript. Neither need
d55a8828
TC
512quoting. Our earlier example, C<$days{'Feb'}> can be written as
513C<$days{Feb}> and the quotes will be assumed automatically. But
719b43e8
RGS
514anything more complicated in the subscript will be interpreted as an
515expression. This means for example that C<$version{2.0}++> is
516equivalent to C<$version{2}++>, not to C<$version{'2.0'}++>.
d55a8828 517
f17ecf24
JH
518=head3 Special floating point: infinity (Inf) and not-a-number (NaN)
519
520Floating point values include the special values C<Inf> and C<NaN>,
521for infinity and not-a-number. The infinity can be also negative.
522
523The infinity is the result of certain math operations that overflow
524the floating point range, like 9**9**9. The not-a-number is the
525result when the result is undefined or unrepresentable. Though note
526that you cannot get C<NaN> from some common "undefined" or
527"out-of-range" operations like dividing by zero, or square root of
528a negative number, since Perl generates fatal errors for those.
529
530The infinity and not-a-number have their own special arithmetic rules.
531The general rule is that they are "contagious": C<Inf> plus one is
532C<Inf>, and C<NaN> plus one is C<NaN>. Where things get interesting
533is when you combine infinities and not-a-numbers: C<Inf> minus C<Inf>
534and C<Inf> divided by C<INf> are C<NaN> (while C<Inf> plus C<Inf> is
535C<Inf> and C<Inf> times C<Inf> is C<Inf>). C<NaN> is also curious
536in that it does not equal any number, I<including> itself:
537C<NaN> != C<NaN>.
538
539Perl doesn't understand C<Inf> and C<NaN> as numeric literals, but
540you can have them as strings, and Perl will convert them as needed:
541"Inf" + 1. (You can, however, import them from the POSIX extension;
542C<use POSIX qw(Inf NaN);> and then use them as literals.)
543
544Note that on input (string to number) Perl accepts C<Inf> and C<NaN>
545in many forms. Case is ignored, and the Win32-specific forms like
546C<1.#INF> are understood, but on output the values are normalized to
547C<Inf> and C<NaN>.
548
692ef166 549=head3 Version Strings
d74e8afc 550X<version string> X<vstring> X<v-string>
692ef166 551
191d61a7 552A literal of the form C<v1.20.300.4000> is parsed as a string composed
6b2463a0
JH
553of characters with the specified ordinals. This form, known as
554v-strings, provides an alternative, more readable way to construct
555strings, rather than use the somewhat less readable interpolation form
556C<"\x{1}\x{14}\x{12c}\x{fa0}">. This is useful for representing
557Unicode strings, and for comparing version "numbers" using the string
558comparison operators, C<cmp>, C<gt>, C<lt> etc. If there are two or
559more dots in the literal, the leading C<v> may be omitted.
b9c62f5b 560
2575c402 561 print v9786; # prints SMILEY, "\x{263a}"
b9c62f5b
GS
562 print v102.111.111; # prints "foo"
563 print 102.111.111; # same
564
565Such literals are accepted by both C<require> and C<use> for
a32521b7
JD
566doing a version check. Note that using the v-strings for IPv4
567addresses is not portable unless you also use the
568inet_aton()/inet_ntoa() routines of the Socket package.
191d61a7 569
d32a65d2 570Note that since Perl 5.8.1 the single-number v-strings (like C<v65>)
8fa72689 571are not v-strings before the C<< => >> operator (which is usually used
3921068c 572to separate a hash key from a hash value); instead they are interpreted
15ecd4ae
JH
573as literal strings ('v65'). They were v-strings from Perl 5.6.0 to
574Perl 5.8.0, but that caused more confusion and breakage than good.
575Multi-number v-strings like C<v65.66> and C<65.66.67> continue to
576be v-strings always.
d32a65d2 577
692ef166 578=head3 Special Literals
d74e8afc
ITB
579X<special literal> X<__END__> X<__DATA__> X<END> X<DATA>
580X<end> X<data> X<^D> X<^Z>
692ef166 581
d55a8828 582The special literals __FILE__, __LINE__, and __PACKAGE__
68dc0745 583represent the current filename, line number, and package name at that
84ed0108
FC
584point in your program. __SUB__ gives a reference to the current
585subroutine. They may be used only as separate tokens; they
68dc0745 586will not be interpolated into strings. If there is no current package
3e92a254 587(due to an empty C<package;> directive), __PACKAGE__ is the undefined
8fdd8881 588value. (But the empty C<package;> is no longer supported, as of version
84ed0108
FC
5895.10.) Outside of a subroutine, __SUB__ is the undefined value. __SUB__
590is only available in 5.16 or higher, and only with a C<use v5.16> or
591C<use feature "current_sub"> declaration.
592X<__FILE__> X<__LINE__> X<__PACKAGE__> X<__SUB__>
593X<line> X<file> X<package>
3e92a254
GS
594
595The two control characters ^D and ^Z, and the tokens __END__ and __DATA__
596may be used to indicate the logical end of the script before the actual
597end of file. Any following text is ignored.
598
1bab44f9 599Text after __DATA__ may be read via the filehandle C<PACKNAME::DATA>,
3e92a254
GS
600where C<PACKNAME> is the package that was current when the __DATA__
601token was encountered. The filehandle is left open pointing to the
4d383607 602line after __DATA__. The program should C<close DATA> when it is done
9c205800
FC
603reading from it. (Leaving it open leaks filehandles if the module is
604reloaded for any reason, so it's a safer practice to close it.) For
4d383607
JK
605compatibility with older scripts written before __DATA__ was
606introduced, __END__ behaves like __DATA__ in the top level script (but
607not in files loaded with C<require> or C<do>) and leaves the remaining
608contents of the file accessible via C<main::DATA>.
3e92a254
GS
609
610See L<SelfLoader> for more description of __DATA__, and
d55a8828
TC
611an example of its use. Note that you cannot read from the DATA
612filehandle in a BEGIN block: the BEGIN block is executed as soon
613as it is seen (during compilation), at which point the corresponding
a00c1fe5 614__DATA__ (or __END__) token has not yet been seen.
a0d0e21e 615
692ef166 616=head3 Barewords
d74e8afc 617X<bareword>
692ef166 618
748a9306 619A word that has no other interpretation in the grammar will
a0d0e21e
LW
620be treated as if it were a quoted string. These are known as
621"barewords". As with filehandles and labels, a bareword that consists
622entirely of lowercase letters risks conflict with future reserved
9f1b1f2d 623words, and if you use the C<use warnings> pragma or the B<-w> switch,
05b4f1ec
FW
624Perl will warn you about any such words. Perl limits barewords (like
625identifiers) to about 250 characters. Future versions of Perl are likely
626to eliminate these arbitrary limitations.
627
628Some people may wish to outlaw barewords entirely. If you
a0d0e21e
LW
629say
630
631 use strict 'subs';
632
633then any bareword that would NOT be interpreted as a subroutine call
634produces a compile-time error instead. The restriction lasts to the
54310121 635end of the enclosing block. An inner block may countermand this
a0d0e21e
LW
636by saying C<no strict 'subs'>.
637
e2b457c0 638=head3 Array Interpolation
d74e8afc 639X<array, interpolation> X<interpolation, array> X<$">
692ef166 640
d55a8828
TC
641Arrays and slices are interpolated into double-quoted strings
642by joining the elements with the delimiter specified in the C<$">
692ef166
SF
643variable (C<$LIST_SEPARATOR> if "use English;" is specified),
644space by default. The following are equivalent:
a0d0e21e 645
84f709e7 646 $temp = join($", @ARGV);
a0d0e21e
LW
647 system "echo $temp";
648
649 system "echo @ARGV";
650
651Within search patterns (which also undergo double-quotish substitution)
d55a8828 652there is an unfortunate ambiguity: Is C</$foo[bar]/> to be interpreted as
a0d0e21e
LW
653C</${foo}[bar]/> (where C<[bar]> is a character class for the regular
654expression) or as C</${foo[bar]}/> (where C<[bar]> is the subscript to array
655@foo)? If @foo doesn't otherwise exist, then it's obviously a
656character class. If @foo exists, Perl takes a good guess about C<[bar]>,
657and is almost always right. If it does guess wrong, or if you're just
658plain paranoid, you can force the correct interpretation with curly
d55a8828 659braces as above.
a0d0e21e 660
7e3b091d 661If you're looking for the information on how to use here-documents,
210b36aa
AMS
662which used to be here, that's been moved to
663L<perlop/Quote and Quote-like Operators>.
be16fac9 664
a0d0e21e 665=head2 List value constructors
d74e8afc 666X<list>
a0d0e21e
LW
667
668List values are denoted by separating individual values by commas
669(and enclosing the list in parentheses where precedence requires it):
670
671 (LIST)
672
d55a8828
TC
673In a context not requiring a list value, the value of what appears
674to be a list literal is simply the value of the final element, as
675with the C comma operator. For example,
a0d0e21e 676
84f709e7 677 @foo = ('cc', '-E', $bar);
a0d0e21e 678
d55a8828 679assigns the entire list value to array @foo, but
a0d0e21e 680
84f709e7 681 $foo = ('cc', '-E', $bar);
a0d0e21e 682
d55a8828
TC
683assigns the value of variable $bar to the scalar variable $foo.
684Note that the value of an actual array in scalar context is the
685length of the array; the following assigns the value 3 to $foo:
a0d0e21e 686
84f709e7 687 @foo = ('cc', '-E', $bar);
7e3b091d 688 $foo = @foo; # $foo gets 3
a0d0e21e 689
54310121 690You may have an optional comma before the closing parenthesis of a
a0d0e21e
LW
691list literal, so that you can say:
692
84f709e7 693 @foo = (
7e3b091d
DA
694 1,
695 2,
696 3,
a0d0e21e
LW
697 );
698
d55a8828
TC
699To use a here-document to assign an array, one line per element,
700you might use an approach like this:
701
84f709e7 702 @sauces = <<End_Lines =~ m/(\S.*\S)/g;
7e3b091d
DA
703 normal tomato
704 spicy tomato
705 green chile
706 pesto
707 white wine
d55a8828
TC
708 End_Lines
709
a0d0e21e 710LISTs do automatic interpolation of sublists. That is, when a LIST is
d55a8828 711evaluated, each element of the list is evaluated in list context, and
a0d0e21e 712the resulting list value is interpolated into LIST just as if each
5a964f20 713individual element were a member of LIST. Thus arrays and hashes lose their
a0d0e21e
LW
714identity in a LIST--the list
715
5a964f20 716 (@foo,@bar,&SomeSub,%glarch)
a0d0e21e
LW
717
718contains all the elements of @foo followed by all the elements of @bar,
5a964f20 719followed by all the elements returned by the subroutine named SomeSub
d55a8828 720called in list context, followed by the key/value pairs of %glarch.
a0d0e21e
LW
721To make a list reference that does I<NOT> interpolate, see L<perlref>.
722
19799a22 723The null list is represented by (). Interpolating it in a list
a0d0e21e
LW
724has no effect. Thus ((),(),()) is equivalent to (). Similarly,
725interpolating an array with no elements is the same as if no
726array had been interpolated at that point.
727
c2689353 728This interpolation combines with the facts that the opening
ab1f959b 729and closing parentheses are optional (except when necessary for
c2689353 730precedence) and lists may end with an optional comma to mean that
8fdd8881 731multiple commas within lists are legal syntax. The list C<1,,3> is a
c2689353
NC
732concatenation of two lists, C<1,> and C<3>, the first of which ends
733with that optional comma. C<1,,3> is C<(1,),(3)> is C<1,3> (And
734similarly for C<1,,,3> is C<(1,),(,),3> is C<1,3> and so on.) Not that
735we'd advise you to use this obfuscation.
736
a0d0e21e 737A list value may also be subscripted like a normal array. You must
54310121 738put the list in parentheses to avoid ambiguity. For example:
a0d0e21e
LW
739
740 # Stat returns list value.
84f709e7 741 $time = (stat($file))[8];
a0d0e21e 742
4633a7c4 743 # SYNTAX ERROR HERE.
84f709e7 744 $time = stat($file)[8]; # OOPS, FORGOT PARENTHESES
4633a7c4 745
a0d0e21e 746 # Find a hex digit.
84f709e7 747 $hexdigit = ('a','b','c','d','e','f')[$digit-10];
a0d0e21e
LW
748
749 # A "reverse comma operator".
750 return (pop(@foo),pop(@foo))[0];
751
d55a8828
TC
752Lists may be assigned to only when each element of the list
753is itself legal to assign to:
a0d0e21e 754
84f709e7 755 ($a, $b, $c) = (1, 2, 3);
a0d0e21e 756
84f709e7 757 ($map{'red'}, $map{'blue'}, $map{'green'}) = (0x00f, 0x0f0, 0xf00);
a0d0e21e 758
d55a8828
TC
759An exception to this is that you may assign to C<undef> in a list.
760This is useful for throwing away some of the return values of a
761function:
762
84f709e7 763 ($dev, $ino, undef, undef, $uid, $gid) = stat($file);
d55a8828 764
e1817ab9
FC
765As of Perl 5.22, you can also use C<(undef)x2> instead of C<undef, undef>.
766(You can also do C<($x) x 2>, which is less useful, because it assigns to
767the same variable twice, clobbering the first value assigned.)
768
d55a8828 769List assignment in scalar context returns the number of elements
4633a7c4
LW
770produced by the expression on the right side of the assignment:
771
7e3b091d
DA
772 $x = (($foo,$bar) = (3,2,1)); # set $x to 3, not 2
773 $x = (($foo,$bar) = f()); # set $x to f()'s return count
4633a7c4 774
d55a8828 775This is handy when you want to do a list assignment in a Boolean
19799a22 776context, because most list functions return a null list when finished,
4633a7c4
LW
777which when assigned produces a 0, which is interpreted as FALSE.
778
ab1f959b
PN
779It's also the source of a useful idiom for executing a function or
780performing an operation in list context and then counting the number of
781return values, by assigning to an empty list and then using that
8fdd8881 782assignment in scalar context. For example, this code:
ab1f959b 783
84f709e7 784 $count = () = $string =~ /\d+/g;
ab1f959b
PN
785
786will place into $count the number of digit groups found in $string.
787This happens because the pattern match is in list context (since it
788is being assigned to the empty list), and will therefore return a list
8fdd8881 789of all matching parts of the string. The list assignment in scalar
ab1f959b 790context will translate that into the number of elements (here, the
8fdd8881 791number of times the pattern matched) and assign that to $count. Note
ab1f959b
PN
792that simply using
793
84f709e7 794 $count = $string =~ /\d+/g;
ab1f959b
PN
795
796would not have worked, since a pattern match in scalar context will
797only return true or false, rather than a count of matches.
798
799The final element of a list assignment may be an array or a hash:
a0d0e21e 800
84f709e7 801 ($a, $b, @rest) = split;
5a964f20 802 my($a, $b, %rest) = @_;
a0d0e21e 803
4633a7c4 804You can actually put an array or hash anywhere in the list, but the first one
d55a8828
TC
805in the list will soak up all the values, and anything after it will become
806undefined. This may be useful in a my() or local().
a0d0e21e 807
d55a8828
TC
808A hash can be initialized using a literal list holding pairs of
809items to be interpreted as a key and a value:
a0d0e21e
LW
810
811 # same as map assignment above
84f709e7 812 %map = ('red',0x00f,'blue',0x0f0,'green',0xf00);
a0d0e21e 813
d55a8828 814While literal lists and named arrays are often interchangeable, that's
4633a7c4
LW
815not the case for hashes. Just because you can subscript a list value like
816a normal array does not mean that you can subscript a list value as a
817hash. Likewise, hashes included as parts of other lists (including
818parameters lists and return lists from functions) always flatten out into
819key/value pairs. That's why it's good to use references sometimes.
a0d0e21e 820
c47ff5f1
GS
821It is often more readable to use the C<< => >> operator between key/value
822pairs. The C<< => >> operator is mostly just a more visually distinctive
b88cefa9 823synonym for a comma, but it also arranges for its left-hand operand to be
ac036724 824interpreted as a string if it's a bareword that would be a legal simple
8fdd8881
FC
825identifier. C<< => >> doesn't quote compound identifiers, that contain
826double colons. This makes it nice for initializing hashes:
a0d0e21e 827
84f709e7 828 %map = (
7e3b091d
DA
829 red => 0x00f,
830 blue => 0x0f0,
831 green => 0xf00,
4633a7c4
LW
832 );
833
834or for initializing hash references to be used as records:
835
84f709e7 836 $rec = {
7e3b091d
DA
837 witch => 'Mable the Merciless',
838 cat => 'Fluffy the Ferocious',
839 date => '10/31/1776',
4633a7c4
LW
840 };
841
842or for using call-by-named-parameter to complicated functions:
843
84f709e7 844 $field = $query->radio_group(
7e3b091d 845 name => 'group_name',
4633a7c4
LW
846 values => ['eenie','meenie','minie'],
847 default => 'meenie',
848 linebreak => 'true',
84f709e7 849 labels => \%labels
4633a7c4 850 );
cb1a09d0
AD
851
852Note that just because a hash is initialized in that order doesn't
853mean that it comes out in that order. See L<perlfunc/sort> for examples
854of how to arrange for an output ordering.
855
c9e3649f
LM
856If a key appears more than once in the initializer list of a hash, the last
857occurrence wins:
858
859 %circle = (
860 center => [5, 10],
861 center => [27, 9],
862 radius => 100,
863 color => [0xDF, 0xFF, 0x00],
864 radius => 54,
865 );
866
867 # same as
868 %circle = (
869 center => [27, 9],
870 color => [0xDF, 0xFF, 0x00],
871 radius => 54,
872 );
873
874This can be used to provide overridable configuration defaults:
875
876 # values in %args take priority over %config_defaults
877 %config = (%config_defaults, %args);
878
692ef166
SF
879=head2 Subscripts
880
aa80e1dc
FC
881An array can be accessed one scalar at a
882time by specifying a dollar sign (C<$>), then the
692ef166
SF
883name of the array (without the leading C<@>), then the subscript inside
884square brackets. For example:
885
886 @myarray = (5, 50, 500, 5000);
2adc35dd 887 print "The Third Element is", $myarray[2], "\n";
692ef166 888
8fdd8881 889The array indices start with 0. A negative subscript retrieves its
692ef166
SF
890value from the end. In our example, C<$myarray[-1]> would have been
8915000, and C<$myarray[-2]> would have been 500.
892
893Hash subscripts are similar, only instead of square brackets curly brackets
8fdd8881 894are used. For example:
692ef166
SF
895
896 %scientists =
897 (
898 "Newton" => "Isaac",
899 "Einstein" => "Albert",
900 "Darwin" => "Charles",
901 "Feynman" => "Richard",
902 );
903
904 print "Darwin's First Name is ", $scientists{"Darwin"}, "\n";
905
aa80e1dc 906You can also subscript a list to get a single element from it:
d55a8828 907
aa80e1dc 908 $dir = (getpwnam("daemon"))[7];
d55a8828 909
9ed2a148
IG
910=head2 Multi-dimensional array emulation
911
912Multidimensional arrays may be emulated by subscripting a hash with a
8fdd8881 913list. The elements of the list are joined with the subscript separator
b8db74f2 914(see L<perlvar/$;>).
9ed2a148
IG
915
916 $foo{$a,$b,$c}
917
918is equivalent to
919
920 $foo{join($;, $a, $b, $c)}
921
922The default subscript separator is "\034", the same as SUBSEP in B<awk>.
923
aa80e1dc
FC
924=head2 Slices
925X<slice> X<array, slice> X<hash, slice>
d55a8828
TC
926
927A slice accesses several elements of a list, an array, or a hash
56d7751a
GS
928simultaneously using a list of subscripts. It's more convenient
929than writing out the individual elements as a list of separate
d55a8828
TC
930scalar values.
931
7e3b091d
DA
932 ($him, $her) = @folks[0,-1]; # array slice
933 @them = @folks[0 .. 3]; # array slice
934 ($who, $home) = @ENV{"USER", "HOME"}; # hash slice
935 ($uid, $dir) = (getpwnam("daemon"))[2,7]; # list slice
d55a8828
TC
936
937Since you can assign to a list of variables, you can also assign to
938an array or hash slice.
939
84f709e7 940 @days[3..5] = qw/Wed Thu Fri/;
d55a8828 941 @colors{'red','blue','green'}
7e3b091d 942 = (0xff0000, 0x0000ff, 0x00ff00);
d55a8828
TC
943 @folks[0, -1] = @folks[-1, 0];
944
945The previous assignments are exactly equivalent to
946
84f709e7
JH
947 ($days[3], $days[4], $days[5]) = qw/Wed Thu Fri/;
948 ($colors{'red'}, $colors{'blue'}, $colors{'green'})
7e3b091d 949 = (0xff0000, 0x0000ff, 0x00ff00);
88fd19e3 950 ($folks[0], $folks[-1]) = ($folks[-1], $folks[0]);
d55a8828
TC
951
952Since changing a slice changes the original array or hash that it's
56d7751a
GS
953slicing, a C<foreach> construct will alter some--or even all--of the
954values of the array or hash.
d55a8828
TC
955
956 foreach (@array[ 4 .. 10 ]) { s/peter/paul/ }
957
00cb5da1 958 foreach (@hash{qw[key1 key2]}) {
7e3b091d
DA
959 s/^\s+//; # trim leading whitespace
960 s/\s+$//; # trim trailing whitespace
961 s/(\w+)/\u\L$1/g; # "titlecase" words
d55a8828
TC
962 }
963
e2ec1b05
AP
964As a special exception, when you slice a list (but not an array or a hash),
965if the list evaluates to empty, then taking a slice of that empty list will
966always yield the empty list in turn. Thus:
08cd8952 967
e2ec1b05
AP
968 @a = ()[0,1]; # @a has no elements
969 @b = (@a)[0,1]; # @b has no elements
970 @c = (sub{}->())[0,1]; # @c has no elements
971 @d = ('a','b')[0,1]; # @d has two elements
972 @e = (@d)[0,1,8,9]; # @e has four elements
973 @f = (@d)[8,9]; # @f has two elements
f51152ef 974
19799a22
GS
975This makes it easy to write loops that terminate when a null list
976is returned:
d55a8828 977
e2ec1b05 978 while ( ($home, $user) = (getpwent)[7,0] ) {
7e3b091d 979 printf "%-8s %s\n", $user, $home;
d55a8828
TC
980 }
981
982As noted earlier in this document, the scalar sense of list assignment
983is the number of elements on the right-hand side of the assignment.
19799a22 984The null list contains no elements, so when the password file is
d55a8828
TC
985exhausted, the result is 0, not 2.
986
ad1de9c6
ML
987Slices in scalar context return the last item of the slice.
988
989 @a = qw/first second third/;
990 %h = (first => 'A', second => 'B');
991 $t = @a[0, 1]; # $t is now 'second'
0de10106 992 $u = @h{'first', 'second'}; # $u is now 'B'
ad1de9c6 993
d55a8828
TC
994If you're confused about why you use an '@' there on a hash slice
995instead of a '%', think of it like this. The type of bracket (square
996or curly) governs whether it's an array or a hash being looked at.
997On the other hand, the leading symbol ('$' or '@') on the array or
998hash indicates whether you are getting back a singular value (a
999scalar) or a plural one (a list).
1000
8a7ab7dc 1001=head3 Key/Value Hash Slices
23a22365 1002
c44d7536
FC
1003Starting in Perl 5.20, a hash slice operation
1004with the % symbol is a variant of slice operation
190c3990 1005returning a list of key/value pairs rather than just values:
23a22365 1006
190c3990
FC
1007 %h = (blonk => 2, foo => 3, squink => 5, bar => 8);
1008 %subset = %h{'foo', 'bar'}; # key/value hash slice
1009 # %subset is now (foo => 3, bar => 8)
23a22365 1010
190c3990
FC
1011However, the result of such a slice cannot be localized, deleted or used
1012in assignment. These are otherwise very much consistent with hash slices
1013using the @ symbol.
23a22365 1014
8a7ab7dc 1015=head3 Index/Value Array Slices
23a22365 1016
c44d7536
FC
1017Similar to key/value hash slices (and also introduced
1018in Perl 5.20), the % array slice syntax returns a list
190c3990 1019of index/value pairs:
23a22365 1020
190c3990
FC
1021 @a = "a".."z";
1022 @list = %a[3,4,6];
1023 # @list is now (3, "d", 4, "e", 6, "g")
23a22365 1024
5f05dabc 1025=head2 Typeglobs and Filehandles
d74e8afc 1026X<typeglob> X<filehandle> X<*>
cb1a09d0
AD
1027
1028Perl uses an internal type called a I<typeglob> to hold an entire
1029symbol table entry. The type prefix of a typeglob is a C<*>, because
54310121 1030it represents all types. This used to be the preferred way to
cb1a09d0 1031pass arrays and hashes by reference into a function, but now that
5a964f20
TC
1032we have real references, this is seldom needed.
1033
1034The main use of typeglobs in modern Perl is create symbol table aliases.
1035This assignment:
1036
1037 *this = *that;
1038
1039makes $this an alias for $that, @this an alias for @that, %this an alias
1040for %that, &this an alias for &that, etc. Much safer is to use a reference.
1041This:
5f05dabc 1042
5a964f20
TC
1043 local *Here::blue = \$There::green;
1044
1045temporarily makes $Here::blue an alias for $There::green, but doesn't
1046make @Here::blue an alias for @There::green, or %Here::blue an alias for
1047%There::green, etc. See L<perlmod/"Symbol Tables"> for more examples
1048of this. Strange though this may seem, this is the basis for the whole
84f709e7 1049module import/export system.
5a964f20 1050
d55a8828 1051Another use for typeglobs is to pass filehandles into a function or
5a964f20
TC
1052to create new filehandles. If you need to use a typeglob to save away
1053a filehandle, do it this way:
5f05dabc 1054
84f709e7 1055 $fh = *STDOUT;
5f05dabc 1056
1057or perhaps as a real reference, like this:
1058
84f709e7 1059 $fh = \*STDOUT;
5f05dabc 1060
5a964f20
TC
1061See L<perlsub> for examples of using these as indirect filehandles
1062in functions.
1063
1064Typeglobs are also a way to create a local filehandle using the local()
1065operator. These last until their block is exited, but may be passed back.
1066For example:
5f05dabc 1067
1068 sub newopen {
7e3b091d
DA
1069 my $path = shift;
1070 local *FH; # not my!
1071 open (FH, $path) or return undef;
1072 return *FH;
5f05dabc 1073 }
84f709e7 1074 $fh = newopen('/etc/passwd');
5f05dabc 1075
d55a8828 1076Now that we have the C<*foo{THING}> notation, typeglobs aren't used as much
5a964f20 1077for filehandle manipulations, although they're still needed to pass brand
8fdd8881 1078new file and directory handles into or out of functions. That's because
d55a8828
TC
1079C<*HANDLE{IO}> only works if HANDLE has already been used as a handle.
1080In other words, C<*FH> must be used to create new symbol table entries;
1081C<*foo{THING}> cannot. When in doubt, use C<*FH>.
1082
36392fcf
GS
1083All functions that are capable of creating filehandles (open(),
1084opendir(), pipe(), socketpair(), sysopen(), socket(), and accept())
1085automatically create an anonymous filehandle if the handle passed to
8fdd8881 1086them is an uninitialized scalar variable. This allows the constructs
36392fcf
GS
1087such as C<open(my $fh, ...)> and C<open(local $fh,...)> to be used to
1088create filehandles that will conveniently be closed automatically when
8fdd8881 1089the scope ends, provided there are no other references to them. This
36392fcf
GS
1090largely eliminates the need for typeglobs when opening filehandles
1091that must be passed around, as in the following example:
1092
1093 sub myopen {
84f709e7 1094 open my $fh, "@_"
7e3b091d
DA
1095 or die "Can't open '@_': $!";
1096 return $fh;
36392fcf
GS
1097 }
1098
1099 {
1100 my $f = myopen("</etc/motd");
7e3b091d
DA
1101 print <$f>;
1102 # $f implicitly closed here
36392fcf
GS
1103 }
1104
b92795fe
AMS
1105Note that if an initialized scalar variable is used instead the
1106result is different: C<my $fh='zzz'; open($fh, ...)> is equivalent
1107to C<open( *{'zzz'}, ...)>.
d83fe814
AT
1108C<use strict 'refs'> forbids such practice.
1109
d55a8828
TC
1110Another way to create anonymous filehandles is with the Symbol
1111module or with the IO::Handle module and its ilk. These modules
1112have the advantage of not hiding different types of the same name
66b6e4ad
KW
1113during the local(). See the bottom of L<perlfunc/open> for an
1114example.
d55a8828
TC
1115
1116=head1 SEE ALSO
1117
1118See L<perlvar> for a description of Perl's built-in variables and
1119a discussion of legal variable names. See L<perlref>, L<perlsub>,
1120and L<perlmod/"Symbol Tables"> for more discussion on typeglobs and
1121the C<*foo{THING}> syntax.