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