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