1=head1 NAME 2 3perlvar - Perl predefined variables 4 5=head1 DESCRIPTION 6 7=head2 Predefined Names 8 9The following names have special meaning to Perl. Most 10punctuation names have reasonable mnemonics, or analogs in the 11shells. Nevertheless, if you wish to use long variable names, 12you need only say 13 14 use English; 15 16at the top of your program. This will alias all the short names to the 17long names in the current package. Some even have medium names, 18generally borrowed from B<awk>. 19 20If you don't mind the performance hit, variables that depend on the 21currently selected filehandle may instead be set by calling an 22appropriate object method on the IO::Handle object. (Summary lines 23below for this contain the word HANDLE.) First you must say 24 25 use IO::Handle; 26 27after which you may use either 28 29 method HANDLE EXPR 30 31or more safely, 32 33 HANDLE->method(EXPR) 34 35Each method returns the old value of the IO::Handle attribute. 36The methods each take an optional EXPR, which if supplied specifies the 37new value for the IO::Handle attribute in question. If not supplied, 38most methods do nothing to the current value--except for 39autoflush(), which will assume a 1 for you, just to be different. 40Because loading in the IO::Handle class is an expensive operation, you should 41learn how to use the regular built-in variables. 42 43A few of these variables are considered "read-only". This means that if 44you try to assign to this variable, either directly or indirectly through 45a reference, you'll raise a run-time exception. 46 47The following list is ordered by scalar variables first, then the 48arrays, then the hashes. 49 50=over 8 51 52=item $ARG 53 54=item $_ 55 56The default input and pattern-searching space. The following pairs are 57equivalent: 58 59 while (<>) {...} # equivalent only in while! 60 while (defined($_ = <>)) {...} 61 62 /^Subject:/ 63 $_ =~ /^Subject:/ 64 65 tr/a-z/A-Z/ 66 $_ =~ tr/a-z/A-Z/ 67 68 chomp 69 chomp($_) 70 71Here are the places where Perl will assume $_ even if you 72don't use it: 73 74=over 3 75 76=item * 77 78Various unary functions, including functions like ord() and int(), as well 79as the all file tests (C<-f>, C<-d>) except for C<-t>, which defaults to 80STDIN. 81 82=item * 83 84Various list functions like print() and unlink(). 85 86=item * 87 88The pattern matching operations C<m//>, C<s///>, and C<tr///> when used 89without an C<=~> operator. 90 91=item * 92 93The default iterator variable in a C<foreach> loop if no other 94variable is supplied. 95 96=item * 97 98The implicit iterator variable in the grep() and map() functions. 99 100=item * 101 102The default place to put an input record when a C<< <FH> >> 103operation's result is tested by itself as the sole criterion of a C<while> 104test. Outside a C<while> test, this will not happen. 105 106=back 107 108(Mnemonic: underline is understood in certain operations.) 109 110=back 111 112=over 8 113 114=item $<I<digits>> 115 116Contains the subpattern from the corresponding set of capturing 117parentheses from the last pattern match, not counting patterns 118matched in nested blocks that have been exited already. (Mnemonic: 119like \digits.) These variables are all read-only and dynamically 120scoped to the current BLOCK. 121 122=item $MATCH 123 124=item $& 125 126The string matched by the last successful pattern match (not counting 127any matches hidden within a BLOCK or eval() enclosed by the current 128BLOCK). (Mnemonic: like & in some editors.) This variable is read-only 129and dynamically scoped to the current BLOCK. 130 131The use of this variable anywhere in a program imposes a considerable 132performance penalty on all regular expression matches. See L<BUGS>. 133 134=item $PREMATCH 135 136=item $` 137 138The string preceding whatever was matched by the last successful 139pattern match (not counting any matches hidden within a BLOCK or eval 140enclosed by the current BLOCK). (Mnemonic: C<`> often precedes a quoted 141string.) This variable is read-only. 142 143The use of this variable anywhere in a program imposes a considerable 144performance penalty on all regular expression matches. See L<BUGS>. 145 146=item $POSTMATCH 147 148=item $' 149 150The string following whatever was matched by the last successful 151pattern match (not counting any matches hidden within a BLOCK or eval() 152enclosed by the current BLOCK). (Mnemonic: C<'> often follows a quoted 153string.) Example: 154 155 $_ = 'abcdefghi'; 156 /def/; 157 print "$`:$&:$'\n"; # prints abc:def:ghi 158 159This variable is read-only and dynamically scoped to the current BLOCK. 160 161The use of this variable anywhere in a program imposes a considerable 162performance penalty on all regular expression matches. See L<BUGS>. 163 164=item $LAST_PAREN_MATCH 165 166=item $+ 167 168The last bracket matched by the last search pattern. This is useful if 169you don't know which one of a set of alternative patterns matched. For 170example: 171 172 /Version: (.*)|Revision: (.*)/ && ($rev = $+); 173 174(Mnemonic: be positive and forward looking.) 175This variable is read-only and dynamically scoped to the current BLOCK. 176 177=item @LAST_MATCH_END 178 179=item @+ 180 181This array holds the offsets of the ends of the last successful 182submatches in the currently active dynamic scope. C<$+[0]> is 183the offset into the string of the end of the entire match. This 184is the same value as what the C<pos> function returns when called 185on the variable that was matched against. The I<n>th element 186of this array holds the offset of the I<n>th submatch, so 187C<$+[1]> is the offset past where $1 ends, C<$+[2]> the offset 188past where $2 ends, and so on. You can use C<$#+> to determine 189how many subgroups were in the last successful match. See the 190examples given for the C<@-> variable. 191 192=item $MULTILINE_MATCHING 193 194=item $* 195 196Set to a non-zero integer value to do multi-line matching within a 197string, 0 (or undefined) to tell Perl that it can assume that strings 198contain a single line, for the purpose of optimizing pattern matches. 199Pattern matches on strings containing multiple newlines can produce 200confusing results when C<$*> is 0 or undefined. Default is undefined. 201(Mnemonic: * matches multiple things.) This variable influences the 202interpretation of only C<^> and C<$>. A literal newline can be searched 203for even when C<$* == 0>. 204 205Use of C<$*> is deprecated in modern Perl, supplanted by 206the C</s> and C</m> modifiers on pattern matching. 207 208Assigning a non-numerical value to C<$*> triggers a warning (and makes 209C<$*> act if C<$* == 0>), while assigning a numerical value to C<$*> 210makes that an implicit C<int> is applied on the value. 211 212=item input_line_number HANDLE EXPR 213 214=item $INPUT_LINE_NUMBER 215 216=item $NR 217 218=item $. 219 220The current input record number for the last file handle from which 221you just read() (or called a C<seek> or C<tell> on). The value 222may be different from the actual physical line number in the file, 223depending on what notion of "line" is in effect--see C<$/> on how 224to change that. An explicit close on a filehandle resets the line 225number. Because C<< <> >> never does an explicit close, line 226numbers increase across ARGV files (but see examples in L<perlfunc/eof>). 227Consider this variable read-only: setting it does not reposition 228the seek pointer; you'll have to do that on your own. Localizing C<$.> 229has the effect of also localizing Perl's notion of "the last read 230filehandle". (Mnemonic: many programs use "." to mean the current line 231number.) 232 233=item input_record_separator HANDLE EXPR 234 235=item $INPUT_RECORD_SEPARATOR 236 237=item $RS 238 239=item $/ 240 241The input record separator, newline by default. This 242influences Perl's idea of what a "line" is. Works like B<awk>'s RS 243variable, including treating empty lines as a terminator if set to 244the null string. (An empty line cannot contain any spaces 245or tabs.) You may set it to a multi-character string to match a 246multi-character terminator, or to C<undef> to read through the end 247of file. Setting it to C<"\n\n"> means something slightly 248different than setting to C<"">, if the file contains consecutive 249empty lines. Setting to C<""> will treat two or more consecutive 250empty lines as a single empty line. Setting to C<"\n\n"> will 251blindly assume that the next input character belongs to the next 252paragraph, even if it's a newline. (Mnemonic: / delimits 253line boundaries when quoting poetry.) 254 255 undef $/; # enable "slurp" mode 256 $_ = <FH>; # whole file now here 257 s/\n[ \t]+/ /g; 258 259Remember: the value of C<$/> is a string, not a regex. B<awk> has to be 260better for something. :-) 261 262Setting C<$/> to a reference to an integer, scalar containing an integer, or 263scalar that's convertible to an integer will attempt to read records 264instead of lines, with the maximum record size being the referenced 265integer. So this: 266 267 $/ = \32768; # or \"32768", or \$var_containing_32768 268 open(FILE, $myfile); 269 $_ = <FILE>; 270 271will read a record of no more than 32768 bytes from FILE. If you're 272not reading from a record-oriented file (or your OS doesn't have 273record-oriented files), then you'll likely get a full chunk of data 274with every read. If a record is larger than the record size you've 275set, you'll get the record back in pieces. 276 277On VMS, record reads are done with the equivalent of C<sysread>, 278so it's best not to mix record and non-record reads on the same 279file. (This is unlikely to be a problem, because any file you'd 280want to read in record mode is probably unusable in line mode.) 281Non-VMS systems do normal I/O, so it's safe to mix record and 282non-record reads of a file. 283 284See also L<perlport/"Newlines">. Also see C<$.>. 285 286=item autoflush HANDLE EXPR 287 288=item $OUTPUT_AUTOFLUSH 289 290=item $| 291 292If set to nonzero, forces a flush right away and after every write 293or print on the currently selected output channel. Default is 0 294(regardless of whether the channel is really buffered by the 295system or not; C<$|> tells you only whether you've asked Perl 296explicitly to flush after each write). STDOUT will 297typically be line buffered if output is to the terminal and block 298buffered otherwise. Setting this variable is useful primarily when 299you are outputting to a pipe or socket, such as when you are running 300a Perl program under B<rsh> and want to see the output as it's 301happening. This has no effect on input buffering. See L<perlfunc/getc> 302for that. (Mnemonic: when you want your pipes to be piping hot.) 303 304=item output_field_separator HANDLE EXPR 305 306=item $OUTPUT_FIELD_SEPARATOR 307 308=item $OFS 309 310=item $, 311 312The output field separator for the print operator. Ordinarily the 313print operator simply prints out its arguments without further 314adornment. To get behavior more like B<awk>, set this variable as 315you would set B<awk>'s OFS variable to specify what is printed 316between fields. (Mnemonic: what is printed when there is a "," in 317your print statement.) 318 319=item output_record_separator HANDLE EXPR 320 321=item $OUTPUT_RECORD_SEPARATOR 322 323=item $ORS 324 325=item $\ 326 327The output record separator for the print operator. Ordinarily the 328print operator simply prints out its arguments as is, with no 329trailing newline or other end-of-record string added. To get 330behavior more like B<awk>, set this variable as you would set 331B<awk>'s ORS variable to specify what is printed at the end of the 332print. (Mnemonic: you set C<$\> instead of adding "\n" at the 333end of the print. Also, it's just like C<$/>, but it's what you 334get "back" from Perl.) 335 336=item $LIST_SEPARATOR 337 338=item $" 339 340This is like C<$,> except that it applies to array and slice values 341interpolated into a double-quoted string (or similar interpreted 342string). Default is a space. (Mnemonic: obvious, I think.) 343 344=item $SUBSCRIPT_SEPARATOR 345 346=item $SUBSEP 347 348=item $; 349 350The subscript separator for multidimensional array emulation. If you 351refer to a hash element as 352 353 $foo{$a,$b,$c} 354 355it really means 356 357 $foo{join($;, $a, $b, $c)} 358 359But don't put 360 361 @foo{$a,$b,$c} # a slice--note the @ 362 363which means 364 365 ($foo{$a},$foo{$b},$foo{$c}) 366 367Default is "\034", the same as SUBSEP in B<awk>. If your 368keys contain binary data there might not be any safe value for C<$;>. 369(Mnemonic: comma (the syntactic subscript separator) is a 370semi-semicolon. Yeah, I know, it's pretty lame, but C<$,> is already 371taken for something more important.) 372 373Consider using "real" multidimensional arrays as described 374in L<perllol>. 375 376=item $OFMT 377 378=item $# 379 380The output format for printed numbers. This variable is a half-hearted 381attempt to emulate B<awk>'s OFMT variable. There are times, however, 382when B<awk> and Perl have differing notions of what counts as 383numeric. The initial value is "%.I<n>g", where I<n> is the value 384of the macro DBL_DIG from your system's F<float.h>. This is different from 385B<awk>'s default OFMT setting of "%.6g", so you need to set C<$#> 386explicitly to get B<awk>'s value. (Mnemonic: # is the number sign.) 387 388Use of C<$#> is deprecated. 389 390=item format_page_number HANDLE EXPR 391 392=item $FORMAT_PAGE_NUMBER 393 394=item $% 395 396The current page number of the currently selected output channel. 397Used with formats. 398(Mnemonic: % is page number in B<nroff>.) 399 400=item format_lines_per_page HANDLE EXPR 401 402=item $FORMAT_LINES_PER_PAGE 403 404=item $= 405 406The current page length (printable lines) of the currently selected 407output channel. Default is 60. 408Used with formats. 409(Mnemonic: = has horizontal lines.) 410 411=item format_lines_left HANDLE EXPR 412 413=item $FORMAT_LINES_LEFT 414 415=item $- 416 417The number of lines left on the page of the currently selected output 418channel. 419Used with formats. 420(Mnemonic: lines_on_page - lines_printed.) 421 422=item @LAST_MATCH_START 423 424=item @- 425 426$-[0] is the offset of the start of the last successful match. 427C<$-[>I<n>C<]> is the offset of the start of the substring matched by 428I<n>-th subpattern, or undef if the subpattern did not match. 429 430Thus after a match against $_, $& coincides with C<substr $_, $-[0], 431$+[0] - $-[0]>. Similarly, C<$>I<n> coincides with C<substr $_, $-[>I<n>C<], 432$+[>I<n>C<] - $-[>I<n>C<]> if C<$-[>I<n>C<]> is defined, and $+ coincides with 433C<substr $_, $-[$#-], $+[$#-]>. One can use C<$#-> to find the last 434matched subgroup in the last successful match. Contrast with 435C<$#+>, the number of subgroups in the regular expression. Compare 436with C<@+>. 437 438This array holds the offsets of the beginnings of the last 439successful submatches in the currently active dynamic scope. 440C<$-[0]> is the offset into the string of the beginning of the 441entire match. The I<n>th element of this array holds the offset 442of the I<n>th submatch, so C<$+[1]> is the offset where $1 443begins, C<$+[2]> the offset where $2 begins, and so on. 444You can use C<$#-> to determine how many subgroups were in the 445last successful match. Compare with the C<@+> variable. 446 447After a match against some variable $var: 448 449=over 5 450 451=item C<$`> is the same as C<substr($var, 0, $-[0])> 452 453=item C<$&> is the same as C<substr($var, $-[0], $+[0] - $-[0])> 454 455=item C<$'> is the same as C<substr($var, $+[0])> 456 457=item C<$1> is the same as C<substr($var, $-[1], $+[1] - $-[1])> 458 459=item C<$2> is the same as C<substr($var, $-[2], $+[2] - $-[2])> 460 461=item C<$3> is the same as C<substr $var, $-[3], $+[3] - $-[3])> 462 463=back 464 465=item format_name HANDLE EXPR 466 467=item $FORMAT_NAME 468 469=item $~ 470 471The name of the current report format for the currently selected output 472channel. Default is the name of the filehandle. (Mnemonic: brother to 473C<$^>.) 474 475=item format_top_name HANDLE EXPR 476 477=item $FORMAT_TOP_NAME 478 479=item $^ 480 481The name of the current top-of-page format for the currently selected 482output channel. Default is the name of the filehandle with _TOP 483appended. (Mnemonic: points to top of page.) 484 485=item format_line_break_characters HANDLE EXPR 486 487=item $FORMAT_LINE_BREAK_CHARACTERS 488 489=item $: 490 491The current set of characters after which a string may be broken to 492fill continuation fields (starting with ^) in a format. Default is 493S<" \n-">, to break on whitespace or hyphens. (Mnemonic: a "colon" in 494poetry is a part of a line.) 495 496=item format_formfeed HANDLE EXPR 497 498=item $FORMAT_FORMFEED 499 500=item $^L 501 502What formats output as a form feed. Default is \f. 503 504=item $ACCUMULATOR 505 506=item $^A 507 508The current value of the write() accumulator for format() lines. A format 509contains formline() calls that put their result into C<$^A>. After 510calling its format, write() prints out the contents of C<$^A> and empties. 511So you never really see the contents of C<$^A> unless you call 512formline() yourself and then look at it. See L<perlform> and 513L<perlfunc/formline()>. 514 515=item $CHILD_ERROR 516 517=item $? 518 519The status returned by the last pipe close, backtick (C<``>) command, 520successful call to wait() or waitpid(), or from the system() 521operator. This is just the 16-bit status word returned by the 522wait() system call (or else is made up to look like it). Thus, the 523exit value of the subprocess is really (C<<< $? >> 8 >>>), and 524C<$? & 127> gives which signal, if any, the process died from, and 525C<$? & 128> reports whether there was a core dump. (Mnemonic: 526similar to B<sh> and B<ksh>.) 527 528Additionally, if the C<h_errno> variable is supported in C, its value 529is returned via $? if any C<gethost*()> function fails. 530 531If you have installed a signal handler for C<SIGCHLD>, the 532value of C<$?> will usually be wrong outside that handler. 533 534Inside an C<END> subroutine C<$?> contains the value that is going to be 535given to C<exit()>. You can modify C<$?> in an C<END> subroutine to 536change the exit status of your program. For example: 537 538 END { 539 $? = 1 if $? == 255; # die would make it 255 540 } 541 542Under VMS, the pragma C<use vmsish 'status'> makes C<$?> reflect the 543actual VMS exit status, instead of the default emulation of POSIX 544status. 545 546Also see L<Error Indicators>. 547 548=item $OS_ERROR 549 550=item $ERRNO 551 552=item $! 553 554If used numerically, yields the current value of the C C<errno> 555variable, with all the usual caveats. (This means that you shouldn't 556depend on the value of C<$!> to be anything in particular unless 557you've gotten a specific error return indicating a system error.) 558If used an a string, yields the corresponding system error string. 559You can assign a number to C<$!> to set I<errno> if, for instance, 560you want C<"$!"> to return the string for error I<n>, or you want 561to set the exit value for the die() operator. (Mnemonic: What just 562went bang?) 563 564Also see L<Error Indicators>. 565 566=item $EXTENDED_OS_ERROR 567 568=item $^E 569 570Error information specific to the current operating system. At 571the moment, this differs from C<$!> under only VMS, OS/2, and Win32 572(and for MacPerl). On all other platforms, C<$^E> is always just 573the same as C<$!>. 574 575Under VMS, C<$^E> provides the VMS status value from the last 576system error. This is more specific information about the last 577system error than that provided by C<$!>. This is particularly 578important when C<$!> is set to B<EVMSERR>. 579 580Under OS/2, C<$^E> is set to the error code of the last call to 581OS/2 API either via CRT, or directly from perl. 582 583Under Win32, C<$^E> always returns the last error information 584reported by the Win32 call C<GetLastError()> which describes 585the last error from within the Win32 API. Most Win32-specific 586code will report errors via C<$^E>. ANSI C and Unix-like calls 587set C<errno> and so most portable Perl code will report errors 588via C<$!>. 589 590Caveats mentioned in the description of C<$!> generally apply to 591C<$^E>, also. (Mnemonic: Extra error explanation.) 592 593Also see L<Error Indicators>. 594 595=item $EVAL_ERROR 596 597=item $@ 598 599The Perl syntax error message from the last eval() operator. If null, the 600last eval() parsed and executed correctly (although the operations you 601invoked may have failed in the normal fashion). (Mnemonic: Where was 602the syntax error "at"?) 603 604Warning messages are not collected in this variable. You can, 605however, set up a routine to process warnings by setting C<$SIG{__WARN__}> 606as described below. 607 608Also see L<Error Indicators>. 609 610=item $PROCESS_ID 611 612=item $PID 613 614=item $$ 615 616The process number of the Perl running this script. You should 617consider this variable read-only, although it will be altered 618across fork() calls. (Mnemonic: same as shells.) 619 620=item $REAL_USER_ID 621 622=item $UID 623 624=item $< 625 626The real uid of this process. (Mnemonic: it's the uid you came I<from>, 627if you're running setuid.) 628 629=item $EFFECTIVE_USER_ID 630 631=item $EUID 632 633=item $> 634 635The effective uid of this process. Example: 636 637 $< = $>; # set real to effective uid 638 ($<,$>) = ($>,$<); # swap real and effective uid 639 640(Mnemonic: it's the uid you went I<to>, if you're running setuid.) 641C<< $< >> and C<< $> >> can be swapped only on machines 642supporting setreuid(). 643 644=item $REAL_GROUP_ID 645 646=item $GID 647 648=item $( 649 650The real gid of this process. If you are on a machine that supports 651membership in multiple groups simultaneously, gives a space separated 652list of groups you are in. The first number is the one returned by 653getgid(), and the subsequent ones by getgroups(), one of which may be 654the same as the first number. 655 656However, a value assigned to C<$(> must be a single number used to 657set the real gid. So the value given by C<$(> should I<not> be assigned 658back to C<$(> without being forced numeric, such as by adding zero. 659 660(Mnemonic: parentheses are used to I<group> things. The real gid is the 661group you I<left>, if you're running setgid.) 662 663=item $EFFECTIVE_GROUP_ID 664 665=item $EGID 666 667=item $) 668 669The effective gid of this process. If you are on a machine that 670supports membership in multiple groups simultaneously, gives a space 671separated list of groups you are in. The first number is the one 672returned by getegid(), and the subsequent ones by getgroups(), one of 673which may be the same as the first number. 674 675Similarly, a value assigned to C<$)> must also be a space-separated 676list of numbers. The first number sets the effective gid, and 677the rest (if any) are passed to setgroups(). To get the effect of an 678empty list for setgroups(), just repeat the new effective gid; that is, 679to force an effective gid of 5 and an effectively empty setgroups() 680list, say C< $) = "5 5" >. 681 682(Mnemonic: parentheses are used to I<group> things. The effective gid 683is the group that's I<right> for you, if you're running setgid.) 684 685C<< $< >>, C<< $> >>, C<$(> and C<$)> can be set only on 686machines that support the corresponding I<set[re][ug]id()> routine. C<$(> 687and C<$)> can be swapped only on machines supporting setregid(). 688 689=item $PROGRAM_NAME 690 691=item $0 692 693Contains the name of the program being executed. On some operating 694systems assigning to C<$0> modifies the argument area that the B<ps> 695program sees. This is more useful as a way of indicating the current 696program state than it is for hiding the program you're running. 697(Mnemonic: same as B<sh> and B<ksh>.) 698 699Note for BSD users: setting C<$0> does not completely remove "perl" 700from the ps(1) output. For example, setting C<$0> to C<"foobar"> will 701result in C<"perl: foobar (perl)">. This is an operating system 702feature. 703 704=item $[ 705 706The index of the first element in an array, and of the first character 707in a substring. Default is 0, but you could theoretically set it 708to 1 to make Perl behave more like B<awk> (or Fortran) when 709subscripting and when evaluating the index() and substr() functions. 710(Mnemonic: [ begins subscripts.) 711 712As of release 5 of Perl, assignment to C<$[> is treated as a compiler 713directive, and cannot influence the behavior of any other file. 714Its use is highly discouraged. 715 716=item $] 717 718The version + patchlevel / 1000 of the Perl interpreter. This variable 719can be used to determine whether the Perl interpreter executing a 720script is in the right range of versions. (Mnemonic: Is this version 721of perl in the right bracket?) Example: 722 723 warn "No checksumming!\n" if $] < 3.019; 724 725See also the documentation of C<use VERSION> and C<require VERSION> 726for a convenient way to fail if the running Perl interpreter is too old. 727 728The use of this variable is deprecated. The floating point representation 729can sometimes lead to inaccurate numeric comparisons. See C<$^V> for a 730more modern representation of the Perl version that allows accurate string 731comparisons. 732 733=item $COMPILING 734 735=item $^C 736 737The current value of the flag associated with the B<-c> switch. 738Mainly of use with B<-MO=...> to allow code to alter its behavior 739when being compiled, such as for example to AUTOLOAD at compile 740time rather than normal, deferred loading. See L<perlcc>. Setting 741C<$^C = 1> is similar to calling C<B::minus_c>. 742 743=item $DEBUGGING 744 745=item $^D 746 747The current value of the debugging flags. (Mnemonic: value of B<-D> 748switch.) 749 750=item $SYSTEM_FD_MAX 751 752=item $^F 753 754The maximum system file descriptor, ordinarily 2. System file 755descriptors are passed to exec()ed processes, while higher file 756descriptors are not. Also, during an open(), system file descriptors are 757preserved even if the open() fails. (Ordinary file descriptors are 758closed before the open() is attempted.) The close-on-exec 759status of a file descriptor will be decided according to the value of 760C<$^F> when the corresponding file, pipe, or socket was opened, not the 761time of the exec(). 762 763=item $^H 764 765WARNING: This variable is strictly for internal use only. Its availability, 766behavior, and contents are subject to change without notice. 767 768This variable contains compile-time hints for the Perl interpreter. At the 769end of compilation of a BLOCK the value of this variable is restored to the 770value when the interpreter started to compile the BLOCK. 771 772When perl begins to parse any block construct that provides a lexical scope 773(e.g., eval body, required file, subroutine body, loop body, or conditional 774block), the existing value of $^H is saved, but its value is left unchanged. 775When the compilation of the block is completed, it regains the saved value. 776Between the points where its value is saved and restored, code that 777executes within BEGIN blocks is free to change the value of $^H. 778 779This behavior provides the semantic of lexical scoping, and is used in, 780for instance, the C<use strict> pragma. 781 782The contents should be an integer; different bits of it are used for 783different pragmatic flags. Here's an example: 784 785 sub add_100 { $^H |= 0x100 } 786 787 sub foo { 788 BEGIN { add_100() } 789 bar->baz($boon); 790 } 791 792Consider what happens during execution of the BEGIN block. At this point 793the BEGIN block has already been compiled, but the body of foo() is still 794being compiled. The new value of $^H will therefore be visible only while 795the body of foo() is being compiled. 796 797Substitution of the above BEGIN block with: 798 799 BEGIN { require strict; strict->import('vars') } 800 801demonstrates how C<use strict 'vars'> is implemented. Here's a conditional 802version of the same lexical pragma: 803 804 BEGIN { require strict; strict->import('vars') if $condition } 805 806=item %^H 807 808WARNING: This variable is strictly for internal use only. Its availability, 809behavior, and contents are subject to change without notice. 810 811The %^H hash provides the same scoping semantic as $^H. This makes it 812useful for implementation of lexically scoped pragmas. 813 814=item $INPLACE_EDIT 815 816=item $^I 817 818The current value of the inplace-edit extension. Use C<undef> to disable 819inplace editing. (Mnemonic: value of B<-i> switch.) 820 821=item $^M 822 823By default, running out of memory is an untrappable, fatal error. 824However, if suitably built, Perl can use the contents of C<$^M> 825as an emergency memory pool after die()ing. Suppose that your Perl 826were compiled with -DPERL_EMERGENCY_SBRK and used Perl's malloc. 827Then 828 829 $^M = 'a' x (1 << 16); 830 831would allocate a 64K buffer for use in an emergency. See the 832F<INSTALL> file in the Perl distribution for information on how to 833enable this option. To discourage casual use of this advanced 834feature, there is no L<English|English> long name for this variable. 835 836=item $OSNAME 837 838=item $^O 839 840The name of the operating system under which this copy of Perl was 841built, as determined during the configuration process. The value 842is identical to C<$Config{'osname'}>. See also L<Config> and the 843B<-V> command-line switch documented in L<perlrun>. 844 845=item $PERLDB 846 847=item $^P 848 849The internal variable for debugging support. The meanings of the 850various bits are subject to change, but currently indicate: 851 852=over 6 853 854=item 0x01 855 856Debug subroutine enter/exit. 857 858=item 0x02 859 860Line-by-line debugging. 861 862=item 0x04 863 864Switch off optimizations. 865 866=item 0x08 867 868Preserve more data for future interactive inspections. 869 870=item 0x10 871 872Keep info about source lines on which a subroutine is defined. 873 874=item 0x20 875 876Start with single-step on. 877 878=item 0x40 879 880Use subroutine address instead of name when reporting. 881 882=item 0x80 883 884Report C<goto &subroutine> as well. 885 886=item 0x100 887 888Provide informative "file" names for evals based on the place they were compiled. 889 890=item 0x200 891 892Provide informative names to anonymous subroutines based on the place they 893were compiled. 894 895=back 896 897Some bits may be relevant at compile-time only, some at 898run-time only. This is a new mechanism and the details may change. 899 900=item $LAST_REGEXP_CODE_RESULT 901 902=item $^R 903 904The result of evaluation of the last successful C<(?{ code })> 905regular expression assertion (see L<perlre>). May be written to. 906 907=item $EXCEPTIONS_BEING_CAUGHT 908 909=item $^S 910 911Current state of the interpreter. Undefined if parsing of the current 912module/eval is not finished (may happen in $SIG{__DIE__} and 913$SIG{__WARN__} handlers). True if inside an eval(), otherwise false. 914 915=item $BASETIME 916 917=item $^T 918 919The time at which the program began running, in seconds since the 920epoch (beginning of 1970). The values returned by the B<-M>, B<-A>, 921and B<-C> filetests are based on this value. 922 923=item $PERL_VERSION 924 925=item $^V 926 927The revision, version, and subversion of the Perl interpreter, represented 928as a string composed of characters with those ordinals. Thus in Perl v5.6.0 929it equals C<chr(5) . chr(6) . chr(0)> and will return true for 930C<$^V eq v5.6.0>. Note that the characters in this string value can 931potentially be in Unicode range. 932 933This can be used to determine whether the Perl interpreter executing a 934script is in the right range of versions. (Mnemonic: use ^V for Version 935Control.) Example: 936 937 warn "No \"our\" declarations!\n" if $^V and $^V lt v5.6.0; 938 939See the documentation of C<use VERSION> and C<require VERSION> 940for a convenient way to fail if the running Perl interpreter is too old. 941 942See also C<$]> for an older representation of the Perl version. 943 944=item $WARNING 945 946=item $^W 947 948The current value of the warning switch, initially true if B<-w> 949was used, false otherwise, but directly modifiable. (Mnemonic: 950related to the B<-w> switch.) See also L<warnings>. 951 952=item ${^WARNING_BITS} 953 954The current set of warning checks enabled by the C<use warnings> pragma. 955See the documentation of C<warnings> for more details. 956 957=item ${^WIDE_SYSTEM_CALLS} 958 959Global flag that enables system calls made by Perl to use wide character 960APIs native to the system, if available. This is currently only implemented 961on the Windows platform. 962 963This can also be enabled from the command line using the C<-C> switch. 964 965The initial value is typically C<0> for compatibility with Perl versions 966earlier than 5.6, but may be automatically set to C<1> by Perl if the system 967provides a user-settable default (e.g., C<$ENV{LC_CTYPE}>). 968 969The C<bytes> pragma always overrides the effect of this flag in the current 970lexical scope. See L<bytes>. 971 972=item $EXECUTABLE_NAME 973 974=item $^X 975 976The name that the Perl binary itself was executed as, from C's C<argv[0]>. 977This may not be a full pathname, nor even necessarily in your path. 978 979=item $ARGV 980 981contains the name of the current file when reading from <>. 982 983=item @ARGV 984 985The array @ARGV contains the command-line arguments intended for 986the script. C<$#ARGV> is generally the number of arguments minus 987one, because C<$ARGV[0]> is the first argument, I<not> the program's 988command name itself. See C<$0> for the command name. 989 990=item @INC 991 992The array @INC contains the list of places that the C<do EXPR>, 993C<require>, or C<use> constructs look for their library files. It 994initially consists of the arguments to any B<-I> command-line 995switches, followed by the default Perl library, probably 996F</usr/local/lib/perl>, followed by ".", to represent the current 997directory. If you need to modify this at runtime, you should use 998the C<use lib> pragma to get the machine-dependent library properly 999loaded also: 1000 1001 use lib '/mypath/libdir/'; 1002 use SomeMod; 1003 1004=item @_ 1005 1006Within a subroutine the array @_ contains the parameters passed to that 1007subroutine. See L<perlsub>. 1008 1009=item %INC 1010 1011The hash %INC contains entries for each filename included via the 1012C<do>, C<require>, or C<use> operators. The key is the filename 1013you specified (with module names converted to pathnames), and the 1014value is the location of the file found. The C<require> 1015operator uses this hash to determine whether a particular file has 1016already been included. 1017 1018=item %ENV 1019 1020=item $ENV{expr} 1021 1022The hash %ENV contains your current environment. Setting a 1023value in C<ENV> changes the environment for any child processes 1024you subsequently fork() off. 1025 1026=item %SIG 1027 1028=item $SIG{expr} 1029 1030The hash %SIG contains signal handlers for signals. For example: 1031 1032 sub handler { # 1st argument is signal name 1033 my($sig) = @_; 1034 print "Caught a SIG$sig--shutting down\n"; 1035 close(LOG); 1036 exit(0); 1037 } 1038 1039 $SIG{'INT'} = \&handler; 1040 $SIG{'QUIT'} = \&handler; 1041 ... 1042 $SIG{'INT'} = 'DEFAULT'; # restore default action 1043 $SIG{'QUIT'} = 'IGNORE'; # ignore SIGQUIT 1044 1045Using a value of C<'IGNORE'> usually has the effect of ignoring the 1046signal, except for the C<CHLD> signal. See L<perlipc> for more about 1047this special case. 1048 1049Here are some other examples: 1050 1051 $SIG{"PIPE"} = "Plumber"; # assumes main::Plumber (not recommended) 1052 $SIG{"PIPE"} = \&Plumber; # just fine; assume current Plumber 1053 $SIG{"PIPE"} = *Plumber; # somewhat esoteric 1054 $SIG{"PIPE"} = Plumber(); # oops, what did Plumber() return?? 1055 1056Be sure not to use a bareword as the name of a signal handler, 1057lest you inadvertently call it. 1058 1059If your system has the sigaction() function then signal handlers are 1060installed using it. This means you get reliable signal handling. If 1061your system has the SA_RESTART flag it is used when signals handlers are 1062installed. This means that system calls for which restarting is supported 1063continue rather than returning when a signal arrives. If you want your 1064system calls to be interrupted by signal delivery then do something like 1065this: 1066 1067 use POSIX ':signal_h'; 1068 1069 my $alarm = 0; 1070 sigaction SIGALRM, new POSIX::SigAction sub { $alarm = 1 } 1071 or die "Error setting SIGALRM handler: $!\n"; 1072 1073See L<POSIX>. 1074 1075Certain internal hooks can be also set using the %SIG hash. The 1076routine indicated by C<$SIG{__WARN__}> is called when a warning message is 1077about to be printed. The warning message is passed as the first 1078argument. The presence of a __WARN__ hook causes the ordinary printing 1079of warnings to STDERR to be suppressed. You can use this to save warnings 1080in a variable, or turn warnings into fatal errors, like this: 1081 1082 local $SIG{__WARN__} = sub { die $_[0] }; 1083 eval $proggie; 1084 1085The routine indicated by C<$SIG{__DIE__}> is called when a fatal exception 1086is about to be thrown. The error message is passed as the first 1087argument. When a __DIE__ hook routine returns, the exception 1088processing continues as it would have in the absence of the hook, 1089unless the hook routine itself exits via a C<goto>, a loop exit, or a die(). 1090The C<__DIE__> handler is explicitly disabled during the call, so that you 1091can die from a C<__DIE__> handler. Similarly for C<__WARN__>. 1092 1093Due to an implementation glitch, the C<$SIG{__DIE__}> hook is called 1094even inside an eval(). Do not use this to rewrite a pending exception 1095in C<$@>, or as a bizarre substitute for overriding CORE::GLOBAL::die(). 1096This strange action at a distance may be fixed in a future release 1097so that C<$SIG{__DIE__}> is only called if your program is about 1098to exit, as was the original intent. Any other use is deprecated. 1099 1100C<__DIE__>/C<__WARN__> handlers are very special in one respect: 1101they may be called to report (probable) errors found by the parser. 1102In such a case the parser may be in inconsistent state, so any 1103attempt to evaluate Perl code from such a handler will probably 1104result in a segfault. This means that warnings or errors that 1105result from parsing Perl should be used with extreme caution, like 1106this: 1107 1108 require Carp if defined $^S; 1109 Carp::confess("Something wrong") if defined &Carp::confess; 1110 die "Something wrong, but could not load Carp to give backtrace... 1111 To see backtrace try starting Perl with -MCarp switch"; 1112 1113Here the first line will load Carp I<unless> it is the parser who 1114called the handler. The second line will print backtrace and die if 1115Carp was available. The third line will be executed only if Carp was 1116not available. 1117 1118See L<perlfunc/die>, L<perlfunc/warn>, L<perlfunc/eval>, and 1119L<warnings> for additional information. 1120 1121=back 1122 1123=head2 Error Indicators 1124 1125The variables C<$@>, C<$!>, C<$^E>, and C<$?> contain information 1126about different types of error conditions that may appear during 1127execution of a Perl program. The variables are shown ordered by 1128the "distance" between the subsystem which reported the error and 1129the Perl process. They correspond to errors detected by the Perl 1130interpreter, C library, operating system, or an external program, 1131respectively. 1132 1133To illustrate the differences between these variables, consider the 1134following Perl expression, which uses a single-quoted string: 1135 1136 eval q{ 1137 open PIPE, "/cdrom/install |"; 1138 @res = <PIPE>; 1139 close PIPE or die "bad pipe: $?, $!"; 1140 }; 1141 1142After execution of this statement all 4 variables may have been set. 1143 1144C<$@> is set if the string to be C<eval>-ed did not compile (this 1145may happen if C<open> or C<close> were imported with bad prototypes), 1146or if Perl code executed during evaluation die()d . In these cases 1147the value of $@ is the compile error, or the argument to C<die> 1148(which will interpolate C<$!> and C<$?>!). (See also L<Fatal>, 1149though.) 1150 1151When the eval() expression above is executed, open(), C<< <PIPE> >>, 1152and C<close> are translated to calls in the C run-time library and 1153thence to the operating system kernel. C<$!> is set to the C library's 1154C<errno> if one of these calls fails. 1155 1156Under a few operating systems, C<$^E> may contain a more verbose 1157error indicator, such as in this case, "CDROM tray not closed." 1158Systems that do not support extended error messages leave C<$^E> 1159the same as C<$!>. 1160 1161Finally, C<$?> may be set to non-0 value if the external program 1162F</cdrom/install> fails. The upper eight bits reflect specific 1163error conditions encountered by the program (the program's exit() 1164value). The lower eight bits reflect mode of failure, like signal 1165death and core dump information See wait(2) for details. In 1166contrast to C<$!> and C<$^E>, which are set only if error condition 1167is detected, the variable C<$?> is set on each C<wait> or pipe 1168C<close>, overwriting the old value. This is more like C<$@>, which 1169on every eval() is always set on failure and cleared on success. 1170 1171For more details, see the individual descriptions at C<$@>, C<$!>, C<$^E>, 1172and C<$?>. 1173 1174=head2 Technical Note on the Syntax of Variable Names 1175 1176Variable names in Perl can have several formats. Usually, they 1177must begin with a letter or underscore, in which case they can be 1178arbitrarily long (up to an internal limit of 251 characters) and 1179may contain letters, digits, underscores, or the special sequence 1180C<::> or C<'>. In this case, the part before the last C<::> or 1181C<'> is taken to be a I<package qualifier>; see L<perlmod>. 1182 1183Perl variable names may also be a sequence of digits or a single 1184punctuation or control character. These names are all reserved for 1185special uses by Perl; for example, the all-digits names are used 1186to hold data captured by backreferences after a regular expression 1187match. Perl has a special syntax for the single-control-character 1188names: It understands C<^X> (caret C<X>) to mean the control-C<X> 1189character. For example, the notation C<$^W> (dollar-sign caret 1190C<W>) is the scalar variable whose name is the single character 1191control-C<W>. This is better than typing a literal control-C<W> 1192into your program. 1193 1194Finally, new in Perl 5.6, Perl variable names may be alphanumeric 1195strings that begin with control characters (or better yet, a caret). 1196These variables must be written in the form C<${^Foo}>; the braces 1197are not optional. C<${^Foo}> denotes the scalar variable whose 1198name is a control-C<F> followed by two C<o>'s. These variables are 1199reserved for future special uses by Perl, except for the ones that 1200begin with C<^_> (control-underscore or caret-underscore). No 1201control-character name that begins with C<^_> will acquire a special 1202meaning in any future version of Perl; such names may therefore be 1203used safely in programs. C<$^_> itself, however, I<is> reserved. 1204 1205Perl identifiers that begin with digits, control characters, or 1206punctuation characters are exempt from the effects of the C<package> 1207declaration and are always forced to be in package C<main>. A few 1208other names are also exempt: 1209 1210 ENV STDIN 1211 INC STDOUT 1212 ARGV STDERR 1213 ARGVOUT 1214 SIG 1215 1216In particular, the new special C<${^_XYZ}> variables are always taken 1217to be in package C<main>, regardless of any C<package> declarations 1218presently in scope. 1219 1220=head1 BUGS 1221 1222Due to an unfortunate accident of Perl's implementation, C<use 1223English> imposes a considerable performance penalty on all regular 1224expression matches in a program, regardless of whether they occur 1225in the scope of C<use English>. For that reason, saying C<use 1226English> in libraries is strongly discouraged. See the 1227Devel::SawAmpersand module documentation from CPAN 1228(http://www.perl.com/CPAN/modules/by-module/Devel/) 1229for more information. 1230 1231Having to even think about the C<$^S> variable in your exception 1232handlers is simply wrong. C<$SIG{__DIE__}> as currently implemented 1233invites grievous and difficult to track down errors. Avoid it 1234and use an C<END{}> or CORE::GLOBAL::die override instead. 1235