1=head1 NAME 2 3perldata - Perl data types 4 5=head1 DESCRIPTION 6 7=head2 Variable names 8X<variable, name> X<variable name> X<data type> X<type> 9 10Perl has three built-in data types: scalars, arrays of scalars, and 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. 17 18Values are usually referred to by name, or through a named reference. 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 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 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 30to the value at runtime. This is described in more detail below 31and in L<perlref>. 32X<identifier> 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 40the inner working of Perl have names containing punctuation characters. 41These are documented in L<perlvar>. 42X<variable, built-in> 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. 48X<scalar> 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 55Entire arrays (and slices of arrays and hashes) are denoted by '@', 56which works much as the word "these" or "those" does in English, 57in that it indicates multiple values are expected. 58X<array> 59 60 @days # ($days[0], $days[1],... $days[n]) 61 @days[3,4,5] # same as ($days[3],$days[4],$days[5]) 62 @days{'a','c'} # same as ($days{'a'},$days{'c'}) 63 64Entire hashes are denoted by '%': 65X<hash> 66 67 %days # (key1, val1, key2, val2 ...) 68 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. 82X<namespace> 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. 94X<identifier, case sensitivity> 95X<case> 96 97It is possible to replace such an alphanumeric name with an expression 98that returns a reference to the appropriate type. For a description 99of this, see L<perlref>. 100 101Names that start with a digit may contain only more digits. Names 102that do not start with a letter, underscore, digit or a caret are 103limited to one character, e.g., C<$%> or 104C<$$>. (Most of these one character names have a predefined 105significance to Perl. For instance, C<$$> is the current process 106id. And all such names are reserved for Perl's possible use.) 107 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 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 identifier names beginning with an underscore. 130 131If not under C<use utf8>, the source is treated as ASCII + 128 extra 132generic characters, and identifiers should match 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 144legal, but C<$foo'bar'> is not. 145 146Additionally, if the identifier is preceded by a sigil -- 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 }) 174 (?&Perl_XIDS) (?&Perl_XIDC)* 175 | (?aa) (?!\d) \w+ 176 ) 177 ) 178 (?<sigil> [&*\$\@\%]) 179 (?<Perl_XIDS> (?[ ( \p{Word} & \p{XID_Start} ) + [_] ]) ) 180 (?<Perl_XIDC> (?[ \p{Word} & \p{XID_Continue} ]) ) 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 187fully-qualified. They come in six forms (but don't use forms 5 and 6): 188 189=over 190 191=item 1. 192 193A sigil, followed solely by digits matching C<\p{POSIX_Digit}>, like 194C<$0>, C<$1>, or C<$10000>. 195 196=item 2. 197 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. 200 201=item 3. 202 203A sigil, followed by a caret and any one of the characters 204C<[][A-Z^_?\]>, like C<$^V> or C<$^]>. 205 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<[\xA1-\xAC\xAE-\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) has been disallowed since v5.26.0. 220The 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 240characters are no longer allowed with S<"use utf8">, it is unwise 241to use this form at all, and utf8ness makes a big difference. 242 243=back 244 245Prior to Perl v5.24, non-graphical ASCII control characters were also 246allowed in some situations; this had been deprecated since v5.20. 247 248=head2 Context 249X<context> X<scalar context> X<list context> 250 251The interpretation of operations and values in Perl sometimes depends 252on the requirements of the context around the operation or value. 253There are two major contexts: list and scalar. Certain operations 254return list values in contexts wanting a list, and scalar values 255otherwise. If this is true of an operation it will be mentioned in 256the documentation for that operation. In other words, Perl overloads 257certain operations based on whether the expected return value is 258singular or plural. Some words in English work this way, like "fish" 259and "sheep". 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 266the integer operation provides scalar context for the <> 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 273then the sort operation provides list context for <>, which 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 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 284anyway) also evaluates the right-hand side in list context. 285 286When you use the C<use warnings> pragma or Perl's B<-w> command-line 287option, you may see warnings 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. 300 301=head2 Scalar values 302X<scalar> X<number> X<string> X<reference> 303 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. 322 323X<truth> X<falsehood> X<true> X<false> X<!> X<not> X<negation> X<0> 324X<boolean> X<bool> 325A scalar value is interpreted as FALSE in the Boolean sense 326if it is undefined, the null string or the number 0 (or its 327string equivalent, "0"), and TRUE if it is anything else. The 328Boolean context is just a special kind of scalar context where no 329conversion to a string or a number is ever performed. 330Negation of a true value by C<!> or C<not> returns a special false value. 331When evaluated as a string it is treated as C<"">, but as a number, it 332is treated as 0. Most Perl operators 333that return true or false behave this way. 334 335There are actually two varieties of null strings (sometimes referred 336to as "empty" strings), a defined one and an undefined one. The 337defined version is just a string of length zero, such as C<"">. 338The undefined version is the value that indicates that there is 339no real value for something, such as when there was an error, or 340at end of file, or when you refer to an uninitialized variable or 341element of an array or hash. Although in early versions of Perl, 342an undefined scalar could become defined when first used in a 343place expecting a defined value, this no longer happens except for 344rare cases of autovivification as explained in L<perlref>. You can 345use the defined() operator to determine whether a scalar value is 346defined (this has no meaning on arrays or hashes), and the undef() 347operator to produce an undefined value. 348X<defined> X<undefined> X<undef> X<null> X<string, null> 349 350To find out whether a given string is a valid non-zero number, it's 351sometimes enough to test it against both numeric 0 and also lexical 352"0" (although this will cause noises if warnings are on). That's 353because strings that aren't numbers count as 0, just as they do in B<awk>: 354 355 if ($str == 0 && $str ne "0") { 356 warn "That doesn't look like a number"; 357 } 358 359That method may be best because otherwise you won't treat IEEE 360notations like C<NaN> or C<Infinity> properly. At other times, you 361might prefer to determine whether string data can be used numerically 362by calling the POSIX::strtod() function or by inspecting your string 363with a regular expression (as documented in L<perlre>). 364 365 warn "has nondigits" if /\D/; 366 warn "not a natural number" unless /^\d+$/; # rejects -3 367 warn "not an integer" unless /^-?\d+$/; # rejects +3 368 warn "not an integer" unless /^[+-]?\d+$/; 369 warn "not a decimal number" unless /^-?\d+\.?\d*$/; # rejects .2 370 warn "not a decimal number" unless /^-?(?:\d+(?:\.\d*)?|\.\d+)$/; 371 warn "not a C float" 372 unless /^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/; 373 374The length of an array is a scalar value. You may find the length 375of array @days by evaluating C<$#days>, as in B<csh>. However, this 376isn't the length of the array; it's the subscript of the last element, 377which is a different value since there is ordinarily a 0th element. 378Assigning to C<$#days> actually changes the length of the array. 379Shortening an array this way destroys intervening values. Lengthening 380an array that was previously shortened does not recover values 381that were in those elements. 382X<$#> X<array, length> 383 384You can also gain some minuscule measure of efficiency by pre-extending 385an array that is going to get big. You can also extend an array 386by assigning to an element that is off the end of the array. You 387can truncate an array down to nothing by assigning the null list 388() to it. The following are equivalent: 389 390 @whatever = (); 391 $#whatever = -1; 392 393If you evaluate an array in scalar context, it returns the length 394of the array. (Note that this is not true of lists, which return 395the last value, like the C comma operator, nor of built-in functions, 396which return whatever they feel like returning.) The following is 397always true: 398X<array, length> 399 400 scalar(@whatever) == $#whatever + 1; 401 402Some programmers choose to use an explicit conversion so as to 403leave nothing to doubt: 404 405 $element_count = scalar(@whatever); 406 407If you evaluate a hash in scalar context, it returns a false value if 408the hash is empty. If there are any key/value pairs, it returns a 409true value. A more precise definition is version dependent. 410 411Prior to Perl 5.25 the value returned was a string consisting of the 412number of used buckets and the number of allocated buckets, separated 413by a slash. This is pretty much useful only to find out whether 414Perl's internal hashing algorithm is performing poorly on your data 415set. For example, you stick 10,000 things in a hash, but evaluating 416%HASH in scalar context reveals C<"1/16">, which means only one out 417of sixteen buckets has been touched, and presumably contains all 41810,000 of your items. This isn't supposed to happen. 419 420As of Perl 5.25 the return was changed to be the count of keys in the 421hash. If you need access to the old behavior you can use 422C<Hash::Util::bucket_ratio()> instead. 423 424If a tied hash is evaluated in scalar context, the C<SCALAR> method is 425called (with a fallback to C<FIRSTKEY>). 426X<hash, scalar context> X<hash, bucket> X<bucket> 427 428You can preallocate space for a hash by assigning to the keys() function. 429This rounds up the allocated buckets to the next power of two: 430 431 keys(%users) = 1000; # allocate 1024 buckets 432 433=head2 Scalar value constructors 434X<scalar, literal> X<scalar, constant> 435 436Numeric literals are specified in any of the following floating point or 437integer formats: 438 439 12345 440 12345.67 441 .23E-10 # a very small number 442 3.14_15_92 # a very important number 443 4_294_967_296 # underscore for legibility 444 0xff # hex 445 0xdead_beef # more hex 446 0377 # octal (only numbers, begins with 0) 447 0o12_345 # alternative octal (introduced in Perl 5.33.5) 448 0b011011 # binary 449 0x1.999ap-4 # hexadecimal floating point (the 'p' is required) 450 451You are allowed to use underscores (underbars) in numeric literals 452between digits for legibility (but not multiple underscores in a row: 453C<23__500> is not legal; C<23_500> is). 454You could, for example, group binary 455digits by threes (as for a Unix-style mode argument such as 0b110_100_100) 456or by fours (to represent nibbles, as in 0b1010_0110) or in other groups. 457X<number, literal> 458 459String literals are usually delimited by either single or double 460quotes. They work much like quotes in the standard Unix shells: 461double-quoted string literals are subject to backslash and variable 462substitution; single-quoted strings are not (except for C<\'> and 463C<\\>). The usual C-style backslash rules apply for making 464characters such as newline, tab, etc., as well as some more exotic 465forms. See L<perlop/"Quote and Quote-like Operators"> for a list. 466X<string, literal> 467 468Hexadecimal, octal, or binary, representations in string literals 469(e.g. '0xff') are not automatically converted to their integer 470representation. The hex() and oct() functions make these conversions 471for you. See L<perlfunc/hex> and L<perlfunc/oct> for more details. 472 473Hexadecimal floating point can start just like a hexadecimal literal, 474and it can be followed by an optional fractional hexadecimal part, 475but it must be followed by C<p>, an optional sign, and a power of two. 476The format is useful for accurately presenting floating point values, 477avoiding conversions to or from decimal floating point, and therefore 478avoiding possible loss in precision. Notice that while most current 479platforms use the 64-bit IEEE 754 floating point, not all do. Another 480potential source of (low-order) differences are the floating point 481rounding modes, which can differ between CPUs, operating systems, 482and compilers, and which Perl doesn't control. 483 484You can also embed newlines directly in your strings, i.e., they can end 485on a different line than they begin. This is nice, but if you forget 486your trailing quote, the error will not be reported until Perl finds 487another line containing the quote character, which may be much further 488on in the script. Variable substitution inside strings is limited to 489scalar variables, arrays, and array or hash slices. (In other words, 490names beginning with $ or @, followed by an optional bracketed 491expression as a subscript.) The following code segment prints out "The 492price is $Z<>100." 493X<interpolation> 494 495 $Price = '$100'; # not interpolated 496 print "The price is $Price.\n"; # interpolated 497 498There is no double interpolation in Perl, so the C<$100> is left as is. 499 500By default floating point numbers substituted inside strings use the 501dot (".") as the decimal separator. If C<use locale> is in effect, 502and POSIX::setlocale() has been called, the character used for the 503decimal separator is affected by the LC_NUMERIC locale. 504See L<perllocale> and L<POSIX>. 505 506=head3 Demarcated variable names using braces 507 508As in some shells, you can enclose the variable name in braces as a 509demarcator to disambiguate it from following alphanumerics and 510underscores or other text. You must also do this when interpolating a 511variable into a string to separate the variable name from a following 512double-colon or an apostrophe since these would be otherwise treated as 513a package separator: 514X<interpolation> 515 516 $who = "Larry"; 517 print PASSWD "${who}::0:0:Superuser:/:/bin/perl\n"; 518 print "We use ${who}speak when ${who}'s here.\n"; 519 520Without the braces, Perl would have looked for a $whospeak, a 521C<$who::0>, and a C<$who's> variable. The last two would be the 522$0 and the $s variables in the (presumably) non-existent package 523C<who>. 524 525In fact, a simple identifier within such curly braces is forced to be a 526string, and likewise within a hash subscript. Neither need quoting. Our 527earlier example, C<$days{'Feb'}> can be written as C<$days{Feb}> and the 528quotes will be assumed automatically. But anything more complicated in 529the subscript will be interpreted as an expression. This means for 530example that C<$version{2.0}++> is equivalent to C<$version{2}++>, not 531to C<$version{'2.0'}++>. 532 533There is a similar problem with interpolation with text that looks like 534array or hash access notation. Placing a simple variable like C<$who> 535immediately in front of text like C<"[1]"> or C<"{foo}"> would cause the 536variable to be interpolated as accessing an element of C<@who> or a 537value stored in C<%who>: 538 539 $who = "Larry Wall"; 540 print "$who[1] is the father of Perl.\n"; 541 542would attempt to access index 1 of an array named C<@who>. Again, using 543braces will prevent this from happening: 544 545 $who = "Larry Wall"; 546 print "${who}[1] is the father of Perl.\n"; 547 548will be treated the same as 549 550 $who = "Larry Wall"; 551 print $who . "[1] is the father of Perl.\n"; 552 553This notation also applies to more complex variable descriptions, 554such as array or hash access with subscripts. For instance 555 556 @name = qw(Larry Curly Moe); 557 print "Also ${name[0]}[1] was a member\n"; 558 559Without the braces the above example would be parsed as a two level 560array subscript in the C<@name> array, and under C<use strict> would 561likely produce a fatal exception, as it would be parsed like this: 562 563 print "Also " . $name[0][1] . " was a member\n"; 564 565and not as the intended: 566 567 print "Also " . $name[0] . "[1] was a member\n"; 568 569A similar result may be derived by using a backslash on the first 570character of the subscript or package notation that is not part of 571the variable you want to access. Thus the above example could also 572be written: 573 574 @name = qw(Larry Curly Moe); 575 print "Also $name[0]\[1] was a member\n"; 576 577however for some special variables (multi character caret variables) the 578demarcated form using curly braces is the B<only> way you can reference 579the variable at all, and the only way you can access a subscript of the 580variable via interpolation. 581 582Consider the magic array C<@{^CAPTURE}> which is populated by the 583regex engine with the contents of all of the capture buffers in a 584pattern (see L<perlvar> and L<perlre>). The B<only> way you can 585access one of these members inside of a string is via the braced 586(demarcated) form: 587 588 "abc"=~/(.)(.)(.)/ 589 and print "Second buffer is ${^CAPTURE[1]}"; 590 591is equivalent to 592 593 "abc"=~/(.)(.)(.)/ 594 and print "Second buffer is " . ${^CAPTURE}[1]; 595 596Saying C<@^CAPTURE> is a syntax error, so it B<must> be referenced as 597C<@{^CAPTURE}>, and to access one of its elements in normal code you 598would write C< ${^CAPTURE}[1] >. However when interpolating in a string 599C<"${^CAPTURE}[1]"> would be equivalent to C<${^CAPTURE} . "[1]">, 600which does not even refer to the same variable! Thus the subscripts must 601B<also> be placed B<inside> of the braces: C<"${^CAPTURE[1]}">. 602 603The demarcated form using curly braces can be used with all the 604different types of variable access, including array and hash slices. For 605instance code like the following: 606 607 @name = qw(Larry Curly Moe); 608 local $" = " and "; 609 print "My favorites were @{name[1,2]}.\n"; 610 611would output 612 613 My favorites were Curly and Moe. 614 615=head3 Special floating point: infinity (Inf) and not-a-number (NaN) 616 617Floating point values include the special values C<Inf> and C<NaN>, 618for infinity and not-a-number. The infinity can be also negative. 619 620The infinity is the result of certain math operations that overflow 621the floating point range, like 9**9**9. The not-a-number is the 622result when the result is undefined or unrepresentable. Though note 623that you cannot get C<NaN> from some common "undefined" or 624"out-of-range" operations like dividing by zero, or square root of 625a negative number, since Perl generates fatal errors for those. 626 627The infinity and not-a-number have their own special arithmetic rules. 628The general rule is that they are "contagious": C<Inf> plus one is 629C<Inf>, and C<NaN> plus one is C<NaN>. Where things get interesting 630is when you combine infinities and not-a-numbers: C<Inf> minus C<Inf> 631and C<Inf> divided by C<Inf> are C<NaN> (while C<Inf> plus C<Inf> is 632C<Inf> and C<Inf> times C<Inf> is C<Inf>). C<NaN> is also curious 633in that it does not equal any number, I<including> itself: 634C<NaN> != C<NaN>. 635 636Perl doesn't understand C<Inf> and C<NaN> as numeric literals, but 637you can have them as strings, and Perl will convert them as needed: 638"Inf" + 1. (You can, however, import them from the POSIX extension; 639C<use POSIX qw(Inf NaN);> and then use them as literals.) 640 641Note that on input (string to number) Perl accepts C<Inf> and C<NaN> 642in many forms. Case is ignored, and the Win32-specific forms like 643C<1.#INF> are understood, but on output the values are normalized to 644C<Inf> and C<NaN>. 645 646=head3 Version Strings 647X<version string> X<vstring> X<v-string> 648 649A literal of the form C<v1.20.300.4000> is parsed as a string composed 650of characters with the specified ordinals. This form, known as 651v-strings, provides an alternative, more readable way to construct 652strings, rather than use the somewhat less readable interpolation form 653C<"\x{1}\x{14}\x{12c}\x{fa0}">. This is useful for representing 654Unicode strings, and for comparing version "numbers" using the string 655comparison operators, C<cmp>, C<gt>, C<lt> etc. If there are two or 656more dots in the literal, the leading C<v> may be omitted. 657 658 print v9786; # prints SMILEY, "\x{263a}" 659 print v102.111.111; # prints "foo" 660 print 102.111.111; # same 661 662Such literals are accepted by both C<require> and C<use> for 663doing a version check. Note that using the v-strings for IPv4 664addresses is not portable unless you also use the 665inet_aton()/inet_ntoa() routines of the Socket package. 666 667Note that since Perl 5.8.1 the single-number v-strings (like C<v65>) 668are not v-strings before the C<< => >> operator (which is usually used 669to separate a hash key from a hash value); instead they are interpreted 670as literal strings ('v65'). They were v-strings from Perl 5.6.0 to 671Perl 5.8.0, but that caused more confusion and breakage than good. 672Multi-number v-strings like C<v65.66> and C<65.66.67> continue to 673be v-strings always. 674 675=head3 Special Literals 676X<special literal> X<__END__> X<__DATA__> X<END> X<DATA> 677X<end> X<data> X<^D> X<^Z> 678 679The special literals __FILE__, __LINE__, and __PACKAGE__ 680represent the current filename, line number, and package name at that 681point in your program. __SUB__ gives a reference to the current 682subroutine. They may be used only as separate tokens; they 683will not be interpolated into strings. If there is no current package 684(due to an empty C<package;> directive), __PACKAGE__ is the undefined 685value. (But the empty C<package;> is no longer supported, as of version 6865.10.) Outside of a subroutine, __SUB__ is the undefined value. __SUB__ 687is only available in 5.16 or higher, and only with a C<use v5.16> or 688C<use feature "current_sub"> declaration. 689X<__FILE__> X<__LINE__> X<__PACKAGE__> X<__SUB__> 690X<line> X<file> X<package> 691 692The two control characters ^D and ^Z, and the tokens __END__ and __DATA__ 693may be used to indicate the logical end of the script before the actual 694end of file. Any following text is ignored by the interpreter unless 695read by the program as described below. 696 697Text after __DATA__ may be read via the filehandle C<PACKNAME::DATA>, 698where C<PACKNAME> is the package that was current when the __DATA__ 699token was encountered. The filehandle is left open pointing to the 700line after __DATA__. The program should C<close DATA> when it is done 701reading from it. (Leaving it open leaks filehandles if the module is 702reloaded for any reason, so it's a safer practice to close it.) For 703compatibility with older scripts written before __DATA__ was 704introduced, __END__ behaves like __DATA__ in the top level script (but 705not in files loaded with C<require> or C<do>) and leaves the remaining 706contents of the file accessible via C<main::DATA>. 707 708 while (my $line = <DATA>) { print $line; } 709 close DATA; 710 __DATA__ 711 Hello world. 712 713The C<DATA> file handle by default has whatever PerlIO layers were 714in place when Perl read the file to parse the source. Normally that 715means that the file is being read bytewise, as if it were encoded in 716Latin-1, but there are two major ways for it to be otherwise. Firstly, 717if the C<__END__>/C<__DATA__> token is in the scope of a C<use utf8> 718pragma then the C<DATA> handle will be in UTF-8 mode. And secondly, 719if the source is being read from perl's standard input then the C<DATA> 720file handle is actually aliased to the C<STDIN> file handle, and may 721be in UTF-8 mode because of the C<PERL_UNICODE> environment variable or 722perl's command-line switches. 723 724See L<SelfLoader> for more description of __DATA__, and 725an example of its use. Note that you cannot read from the DATA 726filehandle in a BEGIN block: the BEGIN block is executed as soon 727as it is seen (during compilation), at which point the corresponding 728__DATA__ (or __END__) token has not yet been seen. 729 730=head3 Barewords 731X<bareword> 732 733A word that has no other interpretation in the grammar will 734be treated as if it were a quoted string. These are known as 735"barewords". As with filehandles and labels, a bareword that consists 736entirely of lowercase letters risks conflict with future reserved 737words, and if you use the C<use warnings> pragma or the B<-w> switch, 738Perl will warn you about any such words. Perl limits barewords (like 739identifiers) to about 250 characters. Future versions of Perl are likely 740to eliminate these arbitrary limitations. 741 742Some people may wish to outlaw barewords entirely. If you 743say 744 745 use strict 'subs'; 746 747then any bareword that would NOT be interpreted as a subroutine call 748produces a compile-time error instead. The restriction lasts to the 749end of the enclosing block. An inner block may countermand this 750by saying C<no strict 'subs'>. 751 752=head3 Array Interpolation 753X<array, interpolation> X<interpolation, array> X<$"> 754 755Arrays and slices are interpolated into double-quoted strings 756by joining the elements with the delimiter specified in the C<$"> 757variable (C<$LIST_SEPARATOR> if "use English;" is specified), 758space by default. The following are equivalent: 759 760 $temp = join($", @ARGV); 761 system "echo $temp"; 762 763 system "echo @ARGV"; 764 765Within search patterns (which also undergo double-quotish substitution) 766there is an unfortunate ambiguity: Is C</$foo[bar]/> to be interpreted as 767C</${foo}[bar]/> (where C<[bar]> is a character class for the regular 768expression) or as C</${foo[bar]}/> (where C<[bar]> is the subscript to array 769@foo)? If @foo doesn't otherwise exist, then it's obviously a 770character class. If @foo exists, Perl takes a good guess about C<[bar]>, 771and is almost always right. If it does guess wrong, or if you're just 772plain paranoid, you can force the correct interpretation with curly 773braces as above. 774 775If you're looking for the information on how to use here-documents, 776which used to be here, that's been moved to 777L<perlop/Quote and Quote-like Operators>. 778 779=head2 List value constructors 780X<list> 781 782List values are denoted by separating individual values by commas 783(and enclosing the list in parentheses where precedence requires it): 784 785 (LIST) 786 787In a context not requiring a list value, the value of what appears 788to be a list literal is simply the value of the final element, as 789with the C comma operator. For example, 790 791 @foo = ('cc', '-E', $bar); 792 793assigns the entire list value to array @foo, but 794 795 $foo = ('cc', '-E', $bar); 796 797assigns the value of variable $bar to the scalar variable $foo. 798Note that the value of an actual array in scalar context is the 799length of the array; the following assigns the value 3 to $foo: 800 801 @foo = ('cc', '-E', $bar); 802 $foo = @foo; # $foo gets 3 803 804You may have an optional comma before the closing parenthesis of a 805list literal, so that you can say: 806 807 @foo = ( 808 1, 809 2, 810 3, 811 ); 812 813To use a here-document to assign an array, one line per element, 814you might use an approach like this: 815 816 @sauces = <<End_Lines =~ m/(\S.*\S)/g; 817 normal tomato 818 spicy tomato 819 green chile 820 pesto 821 white wine 822 End_Lines 823 824LISTs do automatic interpolation of sublists. That is, when a LIST is 825evaluated, each element of the list is evaluated in list context, and 826the resulting list value is interpolated into LIST just as if each 827individual element were a member of LIST. Thus arrays and hashes lose their 828identity in a LIST--the list 829 830 (@foo,@bar,&SomeSub,%glarch) 831 832contains all the elements of @foo followed by all the elements of @bar, 833followed by all the elements returned by the subroutine named SomeSub 834called in list context, followed by the key/value pairs of %glarch. 835To make a list reference that does I<NOT> interpolate, see L<perlref>. 836 837The null list is represented by (). Interpolating it in a list 838has no effect. Thus ((),(),()) is equivalent to (). Similarly, 839interpolating an array with no elements is the same as if no 840array had been interpolated at that point. 841 842This interpolation combines with the facts that the opening 843and closing parentheses are optional (except when necessary for 844precedence) and lists may end with an optional comma to mean that 845multiple commas within lists are legal syntax. The list C<1,,3> is a 846concatenation of two lists, C<1,> and C<3>, the first of which ends 847with that optional comma. C<1,,3> is C<(1,),(3)> is C<1,3> (And 848similarly for C<1,,,3> is C<(1,),(,),3> is C<1,3> and so on.) Not that 849we'd advise you to use this obfuscation. 850 851A list value may also be subscripted like a normal array. You must 852put the list in parentheses to avoid ambiguity. For example: 853 854 # Stat returns list value. 855 $time = (stat($file))[8]; 856 857 # SYNTAX ERROR HERE. 858 $time = stat($file)[8]; # OOPS, FORGOT PARENTHESES 859 860 # Find a hex digit. 861 $hexdigit = ('a','b','c','d','e','f')[$digit-10]; 862 863 # A "reverse comma operator". 864 return (pop(@foo),pop(@foo))[0]; 865 866Lists may be assigned to only when each element of the list 867is itself legal to assign to: 868 869 ($x, $y, $z) = (1, 2, 3); 870 871 ($map{'red'}, $map{'blue'}, $map{'green'}) = (0x00f, 0x0f0, 0xf00); 872 873An exception to this is that you may assign to C<undef> in a list. 874This is useful for throwing away some of the return values of a 875function: 876 877 ($dev, $ino, undef, undef, $uid, $gid) = stat($file); 878 879As of Perl 5.22, you can also use C<(undef)x2> instead of C<undef, undef>. 880(You can also do C<($x) x 2>, which is less useful, because it assigns to 881the same variable twice, clobbering the first value assigned.) 882 883When you assign a list of scalars to an array, all previous values in that 884array are wiped out and the number of elements in the array will now be equal to 885the number of elements in the right-hand list -- the list from which 886assignment was made. The array will automatically resize itself to precisely 887accommodate each element in the right-hand list. 888 889 use warnings; 890 my (@xyz, $x, $y, $z); 891 892 @xyz = (1, 2, 3); 893 print "@xyz\n"; # 1 2 3 894 895 @xyz = ('al', 'be', 'ga', 'de'); 896 print "@xyz\n"; # al be ga de 897 898 @xyz = (101, 102); 899 print "@xyz\n"; # 101 102 900 901When, however, you assign a list of scalars to another list of scalars, the 902results differ according to whether the left-hand list -- the list being 903assigned to -- has the same, more or fewer elements than the right-hand list. 904 905 ($x, $y, $z) = (1, 2, 3); 906 print "$x $y $z\n"; # 1 2 3 907 908 ($x, $y, $z) = ('al', 'be', 'ga', 'de'); 909 print "$x $y $z\n"; # al be ga 910 911 ($x, $y, $z) = (101, 102); 912 print "$x $y $z\n"; # 101 102 913 # Use of uninitialized value $z in concatenation (.) 914 # or string at [program] line [line number]. 915 916If the number of scalars in the left-hand list is less than that in the 917right-hand list, the "extra" scalars in the right-hand list will simply not be 918assigned. 919 920If the number of scalars in the left-hand list is greater than that in the 921left-hand list, the "missing" scalars will become undefined. 922 923 ($x, $y, $z) = (101, 102); 924 for my $el ($x, $y, $z) { 925 (defined $el) ? print "$el " : print "<undef>"; 926 } 927 print "\n"; 928 # 101 102 <undef> 929 930List assignment in scalar context returns the number of elements 931produced by the expression on the right side of the assignment: 932 933 $x = (($foo,$bar) = (3,2,1)); # set $x to 3, not 2 934 $x = (($foo,$bar) = f()); # set $x to f()'s return count 935 936This is handy when you want to do a list assignment in a Boolean 937context, because most list functions return a null list when finished, 938which when assigned produces a 0, which is interpreted as FALSE. 939 940It's also the source of a useful idiom for executing a function or 941performing an operation in list context and then counting the number of 942return values, by assigning to an empty list and then using that 943assignment in scalar context. For example, this code: 944 945 $count = () = $string =~ /\d+/g; 946 947will place into $count the number of digit groups found in $string. 948This happens because the pattern match is in list context (since it 949is being assigned to the empty list), and will therefore return a list 950of all matching parts of the string. The list assignment in scalar 951context will translate that into the number of elements (here, the 952number of times the pattern matched) and assign that to $count. Note 953that simply using 954 955 $count = $string =~ /\d+/g; 956 957would not have worked, since a pattern match in scalar context will 958only return true or false, rather than a count of matches. 959 960The final element of a list assignment may be an array or a hash: 961 962 ($x, $y, @rest) = split; 963 my($x, $y, %rest) = @_; 964 965You can actually put an array or hash anywhere in the list, but the first one 966in the list will soak up all the values, and anything after it will become 967undefined. This may be useful in a my() or local(). 968 969A hash can be initialized using a literal list holding pairs of 970items to be interpreted as a key and a value: 971 972 # same as map assignment above 973 %map = ('red',0x00f,'blue',0x0f0,'green',0xf00); 974 975While literal lists and named arrays are often interchangeable, that's 976not the case for hashes. Just because you can subscript a list value like 977a normal array does not mean that you can subscript a list value as a 978hash. Likewise, hashes included as parts of other lists (including 979parameters lists and return lists from functions) always flatten out into 980key/value pairs. That's why it's good to use references sometimes. 981 982It is often more readable to use the C<< => >> operator between key/value 983pairs. The C<< => >> operator is mostly just a more visually distinctive 984synonym for a comma, but it also arranges for its left-hand operand to be 985interpreted as a string if it's a bareword that would be a legal simple 986identifier. C<< => >> doesn't quote compound identifiers, that contain 987double colons. This makes it nice for initializing hashes: 988 989 %map = ( 990 red => 0x00f, 991 blue => 0x0f0, 992 green => 0xf00, 993 ); 994 995or for initializing hash references to be used as records: 996 997 $rec = { 998 witch => 'Mable the Merciless', 999 cat => 'Fluffy the Ferocious', 1000 date => '10/31/1776', 1001 }; 1002 1003or for using call-by-named-parameter to complicated functions: 1004 1005 $field = $query->radio_group( 1006 name => 'group_name', 1007 values => ['eenie','meenie','minie'], 1008 default => 'meenie', 1009 linebreak => 'true', 1010 labels => \%labels 1011 ); 1012 1013Note that just because a hash is initialized in that order doesn't 1014mean that it comes out in that order. See L<perlfunc/sort> for examples 1015of how to arrange for an output ordering. 1016 1017If a key appears more than once in the initializer list of a hash, the last 1018occurrence wins: 1019 1020 %circle = ( 1021 center => [5, 10], 1022 center => [27, 9], 1023 radius => 100, 1024 color => [0xDF, 0xFF, 0x00], 1025 radius => 54, 1026 ); 1027 1028 # same as 1029 %circle = ( 1030 center => [27, 9], 1031 color => [0xDF, 0xFF, 0x00], 1032 radius => 54, 1033 ); 1034 1035This can be used to provide overridable configuration defaults: 1036 1037 # values in %args take priority over %config_defaults 1038 %config = (%config_defaults, %args); 1039 1040=head2 Subscripts 1041 1042An array can be accessed one scalar at a 1043time by specifying a dollar sign (C<$>), then the 1044name of the array (without the leading C<@>), then the subscript inside 1045square brackets. For example: 1046 1047 @myarray = (5, 50, 500, 5000); 1048 print "The Third Element is", $myarray[2], "\n"; 1049 1050The array indices start with 0. A negative subscript retrieves its 1051value from the end. In our example, C<$myarray[-1]> would have been 10525000, and C<$myarray[-2]> would have been 500. 1053 1054Hash subscripts are similar, only instead of square brackets curly brackets 1055are used. For example: 1056 1057 %scientists = 1058 ( 1059 "Newton" => "Isaac", 1060 "Einstein" => "Albert", 1061 "Darwin" => "Charles", 1062 "Feynman" => "Richard", 1063 ); 1064 1065 print "Darwin's First Name is ", $scientists{"Darwin"}, "\n"; 1066 1067You can also subscript a list to get a single element from it: 1068 1069 $dir = (getpwnam("daemon"))[7]; 1070 1071=head2 Multi-dimensional array emulation 1072 1073Multidimensional arrays may be emulated by subscripting a hash with a 1074list. The elements of the list are joined with the subscript separator 1075(see L<perlvar/$;>). 1076 1077 $foo{$x,$y,$z} 1078 1079is equivalent to 1080 1081 $foo{join($;, $x, $y, $z)} 1082 1083The default subscript separator is "\034", the same as SUBSEP in B<awk>. 1084 1085=head2 Slices 1086X<slice> X<array, slice> X<hash, slice> 1087 1088A slice accesses several elements of a list, an array, or a hash 1089simultaneously using a list of subscripts. It's more convenient 1090than writing out the individual elements as a list of separate 1091scalar values. 1092 1093 ($him, $her) = @folks[0,-1]; # array slice 1094 @them = @folks[0 .. 3]; # array slice 1095 ($who, $home) = @ENV{"USER", "HOME"}; # hash slice 1096 ($uid, $dir) = (getpwnam("daemon"))[2,7]; # list slice 1097 1098Since you can assign to a list of variables, you can also assign to 1099an array or hash slice. 1100 1101 @days[3..5] = qw/Wed Thu Fri/; 1102 @colors{'red','blue','green'} 1103 = (0xff0000, 0x0000ff, 0x00ff00); 1104 @folks[0, -1] = @folks[-1, 0]; 1105 1106The previous assignments are exactly equivalent to 1107 1108 ($days[3], $days[4], $days[5]) = qw/Wed Thu Fri/; 1109 ($colors{'red'}, $colors{'blue'}, $colors{'green'}) 1110 = (0xff0000, 0x0000ff, 0x00ff00); 1111 ($folks[0], $folks[-1]) = ($folks[-1], $folks[0]); 1112 1113Since changing a slice changes the original array or hash that it's 1114slicing, a C<foreach> construct will alter some--or even all--of the 1115values of the array or hash. 1116 1117 foreach (@array[ 4 .. 10 ]) { s/peter/paul/ } 1118 1119 foreach (@hash{qw[key1 key2]}) { 1120 s/^\s+//; # trim leading whitespace 1121 s/\s+$//; # trim trailing whitespace 1122 s/\b(\w)(\w*)\b/\u$1\L$2/g; # "titlecase" words 1123 } 1124 1125As a special exception, when you slice a list (but not an array or a hash), 1126if the list evaluates to empty, then taking a slice of that empty list will 1127always yield the empty list in turn. Thus: 1128 1129 @a = ()[0,1]; # @a has no elements 1130 @b = (@a)[0,1]; # @b has no elements 1131 @c = (sub{}->())[0,1]; # @c has no elements 1132 @d = ('a','b')[0,1]; # @d has two elements 1133 @e = (@d)[0,1,8,9]; # @e has four elements 1134 @f = (@d)[8,9]; # @f has two elements 1135 1136This makes it easy to write loops that terminate when a null list 1137is returned: 1138 1139 while ( ($home, $user) = (getpwent)[7,0] ) { 1140 printf "%-8s %s\n", $user, $home; 1141 } 1142 1143As noted earlier in this document, the scalar sense of list assignment 1144is the number of elements on the right-hand side of the assignment. 1145The null list contains no elements, so when the password file is 1146exhausted, the result is 0, not 2. 1147 1148Slices in scalar context return the last item of the slice. 1149 1150 @a = qw/first second third/; 1151 %h = (first => 'A', second => 'B'); 1152 $t = @a[0, 1]; # $t is now 'second' 1153 $u = @h{'first', 'second'}; # $u is now 'B' 1154 1155If you're confused about why you use an '@' there on a hash slice 1156instead of a '%', think of it like this. The type of bracket (square 1157or curly) governs whether it's an array or a hash being looked at. 1158On the other hand, the leading symbol ('$' or '@') on the array or 1159hash indicates whether you are getting back a singular value (a 1160scalar) or a plural one (a list). 1161 1162=head3 Key/Value Hash Slices 1163 1164Starting in Perl 5.20, a hash slice operation 1165with the % symbol is a variant of slice operation 1166returning a list of key/value pairs rather than just values: 1167 1168 %h = (blonk => 2, foo => 3, squink => 5, bar => 8); 1169 %subset = %h{'foo', 'bar'}; # key/value hash slice 1170 # %subset is now (foo => 3, bar => 8) 1171 %removed = delete %h{'foo', 'bar'}; 1172 # %removed is now (foo => 3, bar => 8) 1173 # %h is now (blonk => 2, squink => 5) 1174 1175However, the result of such a slice cannot be localized or assigned to. 1176These are otherwise very much consistent with hash slices 1177using the @ symbol. 1178 1179=head3 Index/Value Array Slices 1180 1181Similar to key/value hash slices (and also introduced 1182in Perl 5.20), the % array slice syntax returns a list 1183of index/value pairs: 1184 1185 @a = "a".."z"; 1186 @list = %a[3,4,6]; 1187 # @list is now (3, "d", 4, "e", 6, "g") 1188 @removed = delete %a[3,4,6] 1189 # @removed is now (3, "d", 4, "e", 6, "g") 1190 # @list[3,4,6] are now undef 1191 1192Note that calling L<C<delete>|perlfunc/delete EXPR> on array values is 1193strongly discouraged. 1194 1195=head2 Typeglobs and Filehandles 1196X<typeglob> X<filehandle> X<*> 1197 1198Perl uses an internal type called a I<typeglob> to hold an entire 1199symbol table entry. The type prefix of a typeglob is a C<*>, because 1200it represents all types. This used to be the preferred way to 1201pass arrays and hashes by reference into a function, but now that 1202we have real references, this is seldom needed. 1203 1204The main use of typeglobs in modern Perl is create symbol table aliases. 1205This assignment: 1206 1207 *this = *that; 1208 1209makes $this an alias for $that, @this an alias for @that, %this an alias 1210for %that, &this an alias for &that, etc. Much safer is to use a reference. 1211This: 1212 1213 local *Here::blue = \$There::green; 1214 1215temporarily makes $Here::blue an alias for $There::green, but doesn't 1216make @Here::blue an alias for @There::green, or %Here::blue an alias for 1217%There::green, etc. See L<perlmod/"Symbol Tables"> for more examples 1218of this. Strange though this may seem, this is the basis for the whole 1219module import/export system. 1220 1221Another use for typeglobs is to pass filehandles into a function or 1222to create new filehandles. If you need to use a typeglob to save away 1223a filehandle, do it this way: 1224 1225 $fh = *STDOUT; 1226 1227or perhaps as a real reference, like this: 1228 1229 $fh = \*STDOUT; 1230 1231See L<perlsub> for examples of using these as indirect filehandles 1232in functions. 1233 1234Typeglobs are also a way to create a local filehandle using the local() 1235operator. These last until their block is exited, but may be passed back. 1236For example: 1237 1238 sub newopen { 1239 my $path = shift; 1240 local *FH; # not my! 1241 open (FH, $path) or return undef; 1242 return *FH; 1243 } 1244 $fh = newopen('/etc/passwd'); 1245 1246Now that we have the C<*foo{THING}> notation, typeglobs aren't used as much 1247for filehandle manipulations, although they're still needed to pass brand 1248new file and directory handles into or out of functions. That's because 1249C<*HANDLE{IO}> only works if HANDLE has already been used as a handle. 1250In other words, C<*FH> must be used to create new symbol table entries; 1251C<*foo{THING}> cannot. When in doubt, use C<*FH>. 1252 1253All functions that are capable of creating filehandles (open(), 1254opendir(), pipe(), socketpair(), sysopen(), socket(), and accept()) 1255automatically create an anonymous filehandle if the handle passed to 1256them is an uninitialized scalar variable. This allows the constructs 1257such as C<open(my $fh, ...)> and C<open(local $fh,...)> to be used to 1258create filehandles that will conveniently be closed automatically when 1259the scope ends, provided there are no other references to them. This 1260largely eliminates the need for typeglobs when opening filehandles 1261that must be passed around, as in the following example: 1262 1263 sub myopen { 1264 open my $fh, "@_" 1265 or die "Can't open '@_': $!"; 1266 return $fh; 1267 } 1268 1269 { 1270 my $f = myopen("</etc/motd"); 1271 print <$f>; 1272 # $f implicitly closed here 1273 } 1274 1275Note that if an initialized scalar variable is used instead the 1276result is different: C<my $fh='zzz'; open($fh, ...)> is equivalent 1277to C<open( *{'zzz'}, ...)>. 1278C<use strict 'refs'> forbids such practice. 1279 1280Another way to create anonymous filehandles is with the Symbol 1281module or with the IO::Handle module and its ilk. These modules 1282have the advantage of not hiding different types of the same name 1283during the local(). See the bottom of L<perlfunc/open> for an 1284example. 1285 1286=head1 SEE ALSO 1287 1288See L<perlvar> for a description of Perl's built-in variables and 1289a discussion of legal variable names. See L<perlref>, L<perlsub>, 1290and L<perlmod/"Symbol Tables"> for more discussion on typeglobs and 1291the C<*foo{THING}> syntax. 1292