VMS pre7 default signal handling
[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
22d0716c 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 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 126
127 /^Subject:/
128 $_ =~ /^Subject:/
129
130 tr/a-z/A-Z/
131 $_ =~ tr/a-z/A-Z/
132
19799a22 133 chomp
134 chomp($_)
a0d0e21e 135
54310121 136Here are the places where Perl will assume $_ even if you
cb1a09d0 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 157
158The default iterator variable in a C<foreach> loop if no other
159variable is supplied.
160
54310121 161=item *
cb1a09d0 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 170
171=back
172
a0d0e21e 173(Mnemonic: underline is understood in certain operations.)
174
6e2995f4 175=back
176
177=over 8
178
a1db74c9 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 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 189
190=back
191
192=over 8
193
c47ff5f1 194=item $<I<digits>>
a0d0e21e 195
19799a22 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 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 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
667e1aea 212performance penalty on all regular expression matches. See L</BUGS>.
19ddd453 213
a0d0e21e 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 221string.) This variable is read-only.
222
19ddd453 223The use of this variable anywhere in a program imposes a considerable
667e1aea 224performance penalty on all regular expression matches. See L</BUGS>.
19ddd453 225
a0d0e21e 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 233string.) Example:
234
22d0716c 235 local $_ = 'abcdefghi';
a0d0e21e 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
667e1aea 242performance penalty on all regular expression matches. See L</BUGS>.
19ddd453 243
a0d0e21e 244=item $LAST_PAREN_MATCH
245
246=item $+
247
a01268b5 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 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 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 261pattern. (Mnemonic: the (possibly) Nested parenthesis that most
262recently closed.)
263
210b36aa 264This is primarily used inside C<(?{...})> blocks for examining text
a01268b5 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 275=item @LAST_MATCH_END
276
6cef1e77 277=item @+
278
4ba05bdc 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 290=item $MULTILINE_MATCHING
291
292=item $*
293
1555b0cb 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 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 311
312=item $INPUT_LINE_NUMBER
313
314=item $NR
315
316=item $.
317
fcc7d916 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 345
346=item $INPUT_RECORD_SEPARATOR
347
348=item $RS
349
350=item $/
351
14218588 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 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 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 366 local $/; # enable "slurp" mode
367 local $_ = <FH>; # whole file now here
a0d0e21e 368 s/\n[ \t]+/ /g;
369
19799a22 370Remember: the value of C<$/> is a string, not a regex. B<awk> has to be
371better for something. :-)
68dc0745 372
19799a22 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 378 local $/ = \32768; # or \"32768", or \$var_containing_32768
379 open my $fh, $myfile or die $!;
380 local $_ = <$fh>;
5b2b9c68 381
19799a22 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 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 398
399=item $OUTPUT_AUTOFLUSH
400
401=item $|
402
19799a22 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 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 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 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 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 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 446
447=item $LIST_SEPARATOR
448
449=item $"
450
19799a22 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 454
455=item $SUBSCRIPT_SEPARATOR
456
457=item $SUBSEP
458
459=item $;
460
54310121 461The subscript separator for multidimensional array emulation. If you
a0d0e21e 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 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 482taken for something more important.)
483
19799a22 484Consider using "real" multidimensional arrays as described
485in L<perllol>.
a0d0e21e 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 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 509(Mnemonic: % is page number in B<nroff>.)
510
fcc7d916 511=item HANDLE->format_lines_per_page(EXPR)
a0d0e21e 512
513=item $FORMAT_LINES_PER_PAGE
514
515=item $=
516
517The current page length (printable lines) of the currently selected
19799a22 518output channel. Default is 60.
519Used with formats.
520(Mnemonic: = has horizontal lines.)
a0d0e21e 521
fcc7d916 522=item HANDLE->format_lines_left(EXPR)
a0d0e21e 523
524=item $FORMAT_LINES_LEFT
525
526=item $-
527
528The number of lines left on the page of the currently selected output
19799a22 529channel.
530Used with formats.
531(Mnemonic: lines_on_page - lines_printed.)
a0d0e21e 532
fe307981 533=item @LAST_MATCH_START
534
6cef1e77 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 540
541Thus after a match against $_, $& coincides with C<substr $_, $-[0],
8f580fb8 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 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 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 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 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 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 571
572=back
573
fcc7d916 574=item HANDLE->format_name(EXPR)
a0d0e21e 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 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 592appended. (Mnemonic: points to top of page.)
593
46550894 594=item IO::Handle->format_line_break_characters EXPR
a0d0e21e 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 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 606
607=item $FORMAT_FORMFEED
608
609=item $^L
610
14218588 611What formats output as a form feed. Default is \f.
a0d0e21e 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 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 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 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 641value of C<$?> will usually be wrong outside that handler.
642
a8f8344d 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 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 655Also see L<Error Indicators>.
656
0a378802 657=item ${^ENCODING}
658
659The encoding used to interpret native eight-bit encodings to Unicode,
660see L<encode>. An opaque C<Encode::XS> object.
661
a0d0e21e 662=item $OS_ERROR
663
664=item $ERRNO
665
666=item $!
667
19799a22 668If used numerically, yields the current value of the C C<errno>
669variable, with all the usual caveats. (This means that you shouldn't
670depend on the value of C<$!> to be anything in particular unless
671you've gotten a specific error return indicating a system error.)
672If used an a string, yields the corresponding system error string.
673You can assign a number to C<$!> to set I<errno> if, for instance,
674you want C<"$!"> to return the string for error I<n>, or you want
675to set the exit value for the die() operator. (Mnemonic: What just
676went bang?)
a0d0e21e 677
55602bd2 678Also see L<Error Indicators>.
679
5c055ba3 680=item $EXTENDED_OS_ERROR
681
682=item $^E
683
22fae026 684Error information specific to the current operating system. At
685the moment, this differs from C<$!> under only VMS, OS/2, and Win32
686(and for MacPerl). On all other platforms, C<$^E> is always just
687the same as C<$!>.
688
689Under VMS, C<$^E> provides the VMS status value from the last
690system error. This is more specific information about the last
691system error than that provided by C<$!>. This is particularly
d516a115 692important when C<$!> is set to B<EVMSERR>.
22fae026 693
1c1c7f20 694Under OS/2, C<$^E> is set to the error code of the last call to
695OS/2 API either via CRT, or directly from perl.
22fae026 696
697Under Win32, C<$^E> always returns the last error information
698reported by the Win32 call C<GetLastError()> which describes
699the last error from within the Win32 API. Most Win32-specific
19799a22 700code will report errors via C<$^E>. ANSI C and Unix-like calls
22fae026 701set C<errno> and so most portable Perl code will report errors
702via C<$!>.
703
704Caveats mentioned in the description of C<$!> generally apply to
705C<$^E>, also. (Mnemonic: Extra error explanation.)
5c055ba3 706
55602bd2 707Also see L<Error Indicators>.
708
a0d0e21e 709=item $EVAL_ERROR
710
711=item $@
712
4a280ebe 713The Perl syntax error message from the last eval() operator.
714If $@ is the null string, the last eval() parsed and executed
715correctly (although the operations you invoked may have failed in the
716normal fashion). (Mnemonic: Where was the syntax error "at"?)
a0d0e21e 717
19799a22 718Warning messages are not collected in this variable. You can,
a8f8344d 719however, set up a routine to process warnings by setting C<$SIG{__WARN__}>
54310121 720as described below.
748a9306 721
55602bd2 722Also see L<Error Indicators>.
723
a0d0e21e 724=item $PROCESS_ID
725
726=item $PID
727
728=item $$
729
19799a22 730The process number of the Perl running this script. You should
731consider this variable read-only, although it will be altered
732across fork() calls. (Mnemonic: same as shells.)
a0d0e21e 733
734=item $REAL_USER_ID
735
736=item $UID
737
738=item $<
739
19799a22 740The real uid of this process. (Mnemonic: it's the uid you came I<from>,
a043a685 741if you're running setuid.) You can change both the real uid and
742the effective uid at the same time by using POSIX::setuid().
a0d0e21e 743
744=item $EFFECTIVE_USER_ID
745
746=item $EUID
747
748=item $>
749
750The effective uid of this process. Example:
751
752 $< = $>; # set real to effective uid
753 ($<,$>) = ($>,$<); # swap real and effective uid
754
a043a685 755You can change both the effective uid and the real uid at the same
756time by using POSIX::setuid().
757
19799a22 758(Mnemonic: it's the uid you went I<to>, if you're running setuid.)
c47ff5f1 759C<< $< >> and C<< $> >> can be swapped only on machines
8cc95fdb 760supporting setreuid().
a0d0e21e 761
762=item $REAL_GROUP_ID
763
764=item $GID
765
766=item $(
767
768The real gid of this process. If you are on a machine that supports
769membership in multiple groups simultaneously, gives a space separated
770list of groups you are in. The first number is the one returned by
771getgid(), and the subsequent ones by getgroups(), one of which may be
8cc95fdb 772the same as the first number.
773
19799a22 774However, a value assigned to C<$(> must be a single number used to
775set the real gid. So the value given by C<$(> should I<not> be assigned
776back to C<$(> without being forced numeric, such as by adding zero.
8cc95fdb 777
a043a685 778You can change both the real gid and the effective gid at the same
779time by using POSIX::setgid().
780
19799a22 781(Mnemonic: parentheses are used to I<group> things. The real gid is the
782group you I<left>, if you're running setgid.)
a0d0e21e 783
784=item $EFFECTIVE_GROUP_ID
785
786=item $EGID
787
788=item $)
789
790The effective gid of this process. If you are on a machine that
791supports membership in multiple groups simultaneously, gives a space
792separated list of groups you are in. The first number is the one
793returned by getegid(), and the subsequent ones by getgroups(), one of
8cc95fdb 794which may be the same as the first number.
795
19799a22 796Similarly, a value assigned to C<$)> must also be a space-separated
14218588 797list of numbers. The first number sets the effective gid, and
8cc95fdb 798the rest (if any) are passed to setgroups(). To get the effect of an
799empty list for setgroups(), just repeat the new effective gid; that is,
800to force an effective gid of 5 and an effectively empty setgroups()
801list, say C< $) = "5 5" >.
802
a043a685 803You can change both the effective gid and the real gid at the same
804time by using POSIX::setgid() (use only a single numeric argument).
805
19799a22 806(Mnemonic: parentheses are used to I<group> things. The effective gid
807is the group that's I<right> for you, if you're running setgid.)
a0d0e21e 808
c47ff5f1 809C<< $< >>, C<< $> >>, C<$(> and C<$)> can be set only on
19799a22 810machines that support the corresponding I<set[re][ug]id()> routine. C<$(>
811and C<$)> can be swapped only on machines supporting setregid().
a0d0e21e 812
813=item $PROGRAM_NAME
814
815=item $0
816
19799a22 817Contains the name of the program being executed. On some operating
818systems assigning to C<$0> modifies the argument area that the B<ps>
819program sees. This is more useful as a way of indicating the current
820program state than it is for hiding the program you're running.
a0d0e21e 821(Mnemonic: same as B<sh> and B<ksh>.)
822
4bc88a62 823Note for BSD users: setting C<$0> does not completely remove "perl"
824from the ps(1) output. For example, setting C<$0> to C<"foobar"> will
825result in C<"perl: foobar (perl)">. This is an operating system
826feature.
827
a0d0e21e 828=item $[
829
830The index of the first element in an array, and of the first character
19799a22 831in a substring. Default is 0, but you could theoretically set it
832to 1 to make Perl behave more like B<awk> (or Fortran) when
833subscripting and when evaluating the index() and substr() functions.
834(Mnemonic: [ begins subscripts.)
a0d0e21e 835
19799a22 836As of release 5 of Perl, assignment to C<$[> is treated as a compiler
837directive, and cannot influence the behavior of any other file.
838Its use is highly discouraged.
a0d0e21e 839
a0d0e21e 840=item $]
841
54310121 842The version + patchlevel / 1000 of the Perl interpreter. This variable
843can be used to determine whether the Perl interpreter executing a
844script is in the right range of versions. (Mnemonic: Is this version
845of perl in the right bracket?) Example:
a0d0e21e 846
847 warn "No checksumming!\n" if $] < 3.019;
848
54310121 849See also the documentation of C<use VERSION> and C<require VERSION>
19799a22 850for a convenient way to fail if the running Perl interpreter is too old.
a0d0e21e 851
0c8d858b 852The floating point representation can sometimes lead to inaccurate
853numeric comparisons. See C<$^V> for a more modern representation of
854the Perl version that allows accurate string comparisons.
16070b82 855
305aace0 856=item $COMPILING
857
858=item $^C
859
19799a22 860The current value of the flag associated with the B<-c> switch.
861Mainly of use with B<-MO=...> to allow code to alter its behavior
862when being compiled, such as for example to AUTOLOAD at compile
863time rather than normal, deferred loading. See L<perlcc>. Setting
864C<$^C = 1> is similar to calling C<B::minus_c>.
305aace0 865
a0d0e21e 866=item $DEBUGGING
867
868=item $^D
869
870The current value of the debugging flags. (Mnemonic: value of B<-D>
871switch.)
872
873=item $SYSTEM_FD_MAX
874
875=item $^F
876
877The maximum system file descriptor, ordinarily 2. System file
878descriptors are passed to exec()ed processes, while higher file
879descriptors are not. Also, during an open(), system file descriptors are
880preserved even if the open() fails. (Ordinary file descriptors are
19799a22 881closed before the open() is attempted.) The close-on-exec
a0d0e21e 882status of a file descriptor will be decided according to the value of
8d2a6795 883C<$^F> when the corresponding file, pipe, or socket was opened, not the
884time of the exec().
a0d0e21e 885
6e2995f4 886=item $^H
887
0462a1ab 888WARNING: This variable is strictly for internal use only. Its availability,
889behavior, and contents are subject to change without notice.
890
891This variable contains compile-time hints for the Perl interpreter. At the
892end of compilation of a BLOCK the value of this variable is restored to the
893value when the interpreter started to compile the BLOCK.
894
895When perl begins to parse any block construct that provides a lexical scope
896(e.g., eval body, required file, subroutine body, loop body, or conditional
897block), the existing value of $^H is saved, but its value is left unchanged.
898When the compilation of the block is completed, it regains the saved value.
899Between the points where its value is saved and restored, code that
900executes within BEGIN blocks is free to change the value of $^H.
901
902This behavior provides the semantic of lexical scoping, and is used in,
903for instance, the C<use strict> pragma.
904
905The contents should be an integer; different bits of it are used for
906different pragmatic flags. Here's an example:
907
908 sub add_100 { $^H |= 0x100 }
909
910 sub foo {
911 BEGIN { add_100() }
912 bar->baz($boon);
913 }
914
915Consider what happens during execution of the BEGIN block. At this point
916the BEGIN block has already been compiled, but the body of foo() is still
917being compiled. The new value of $^H will therefore be visible only while
918the body of foo() is being compiled.
919
920Substitution of the above BEGIN block with:
921
922 BEGIN { require strict; strict->import('vars') }
923
924demonstrates how C<use strict 'vars'> is implemented. Here's a conditional
925version of the same lexical pragma:
926
927 BEGIN { require strict; strict->import('vars') if $condition }
928
929=item %^H
930
931WARNING: This variable is strictly for internal use only. Its availability,
932behavior, and contents are subject to change without notice.
933
934The %^H hash provides the same scoping semantic as $^H. This makes it
935useful for implementation of lexically scoped pragmas.
6e2995f4 936
a0d0e21e 937=item $INPLACE_EDIT
938
939=item $^I
940
941The current value of the inplace-edit extension. Use C<undef> to disable
942inplace editing. (Mnemonic: value of B<-i> switch.)
943
fb73857a 944=item $^M
945
19799a22 946By default, running out of memory is an untrappable, fatal error.
947However, if suitably built, Perl can use the contents of C<$^M>
948as an emergency memory pool after die()ing. Suppose that your Perl
949were compiled with -DPERL_EMERGENCY_SBRK and used Perl's malloc.
950Then
fb73857a 951
19799a22 952 $^M = 'a' x (1 << 16);
fb73857a 953
51ee6500 954would allocate a 64K buffer for use in an emergency. See the
19799a22 955F<INSTALL> file in the Perl distribution for information on how to
956enable this option. To discourage casual use of this advanced
4ec0190b 957feature, there is no L<English|English> long name for this variable.
fb73857a 958
5c055ba3 959=item $OSNAME
6e2995f4 960
5c055ba3 961=item $^O
962
963The name of the operating system under which this copy of Perl was
964built, as determined during the configuration process. The value
19799a22 965is identical to C<$Config{'osname'}>. See also L<Config> and the
966B<-V> command-line switch documented in L<perlrun>.
5c055ba3 967
e2e27056 968=item ${^OPEN}
969
970An internal variable used by PerlIO. A string in two parts, separated
971by a C<\0> byte, the first part is the input disciplines, the second
972part is the output disciplines.
973
a0d0e21e 974=item $PERLDB
975
976=item $^P
977
19799a22 978The internal variable for debugging support. The meanings of the
979various bits are subject to change, but currently indicate:
84902520 980
981=over 6
982
983=item 0x01
984
985Debug subroutine enter/exit.
986
987=item 0x02
988
989Line-by-line debugging.
990
991=item 0x04
992
993Switch off optimizations.
994
995=item 0x08
996
997Preserve more data for future interactive inspections.
998
999=item 0x10
1000
1001Keep info about source lines on which a subroutine is defined.
1002
1003=item 0x20
1004
1005Start with single-step on.
1006
83ee9e09 1007=item 0x40
1008
1009Use subroutine address instead of name when reporting.
1010
1011=item 0x80
1012
1013Report C<goto &subroutine> as well.
1014
1015=item 0x100
1016
1017Provide informative "file" names for evals based on the place they were compiled.
1018
1019=item 0x200
1020
1021Provide informative names to anonymous subroutines based on the place they
1022were compiled.
1023
84902520 1024=back
1025
19799a22 1026Some bits may be relevant at compile-time only, some at
1027run-time only. This is a new mechanism and the details may change.
a0d0e21e 1028
66558a10 1029=item $LAST_REGEXP_CODE_RESULT
1030
b9ac3b5b 1031=item $^R
1032
19799a22 1033The result of evaluation of the last successful C<(?{ code })>
1034regular expression assertion (see L<perlre>). May be written to.
b9ac3b5b 1035
66558a10 1036=item $EXCEPTIONS_BEING_CAUGHT
1037
fb73857a 1038=item $^S
1039
1040Current state of the interpreter. Undefined if parsing of the current
1041module/eval is not finished (may happen in $SIG{__DIE__} and
19799a22 1042$SIG{__WARN__} handlers). True if inside an eval(), otherwise false.
fb73857a 1043
a0d0e21e 1044=item $BASETIME
1045
1046=item $^T
1047
19799a22 1048The time at which the program began running, in seconds since the
5f05dabc 1049epoch (beginning of 1970). The values returned by the B<-M>, B<-A>,
19799a22 1050and B<-C> filetests are based on this value.
a0d0e21e 1051
7c36658b 1052=item ${^TAINT}
1053
c212f17f 1054Reflects if taint mode is on or off (i.e. if the program was run with
7c36658b 1055B<-T> or not). True for on, false for off.
1056
44dcb63b 1057=item $PERL_VERSION
b459063d 1058
16070b82 1059=item $^V
1060
1061The revision, version, and subversion of the Perl interpreter, represented
da2094fd 1062as a string composed of characters with those ordinals. Thus in Perl v5.6.0
44dcb63b 1063it equals C<chr(5) . chr(6) . chr(0)> and will return true for
1064C<$^V eq v5.6.0>. Note that the characters in this string value can
1065potentially be in Unicode range.
16070b82 1066
1067This can be used to determine whether the Perl interpreter executing a
1068script is in the right range of versions. (Mnemonic: use ^V for Version
44dcb63b 1069Control.) Example:
16070b82 1070
3fd4402b 1071 warn "No \"our\" declarations!\n" if $^V and $^V lt v5.6.0;
16070b82 1072
44dcb63b 1073See the documentation of C<use VERSION> and C<require VERSION>
16070b82 1074for a convenient way to fail if the running Perl interpreter is too old.
1075
1076See also C<$]> for an older representation of the Perl version.
1077
a0d0e21e 1078=item $WARNING
1079
1080=item $^W
1081
19799a22 1082The current value of the warning switch, initially true if B<-w>
1083was used, false otherwise, but directly modifiable. (Mnemonic:
4438c4b7 1084related to the B<-w> switch.) See also L<warnings>.
1085
6a818117 1086=item ${^WARNING_BITS}
4438c4b7 1087
1088The current set of warning checks enabled by the C<use warnings> pragma.
1089See the documentation of C<warnings> for more details.
a0d0e21e 1090
46487f74 1091=item ${^WIDE_SYSTEM_CALLS}
1092
1093Global flag that enables system calls made by Perl to use wide character
1094APIs native to the system, if available. This is currently only implemented
1095on the Windows platform.
1096
1097This can also be enabled from the command line using the C<-C> switch.
1098
1099The initial value is typically C<0> for compatibility with Perl versions
1100earlier than 5.6, but may be automatically set to C<1> by Perl if the system
1101provides a user-settable default (e.g., C<$ENV{LC_CTYPE}>).
1102
8058d7ab 1103The C<bytes> pragma always overrides the effect of this flag in the current
1104lexical scope. See L<bytes>.
46487f74 1105
a0d0e21e 1106=item $EXECUTABLE_NAME
1107
1108=item $^X
1109
1110The name that the Perl binary itself was executed as, from C's C<argv[0]>.
19799a22 1111This may not be a full pathname, nor even necessarily in your path.
a0d0e21e 1112
2d84a16a 1113=item ARGV
1114
1115The special filehandle that iterates over command-line filenames in
1116C<@ARGV>. Usually written as the null filehandle in the angle operator
1117C<< <> >>. Note that currently C<ARGV> only has its magical effect
1118within the C<< <> >> operator; elsewhere it is just a plain filehandle
1119corresponding to the last file opened by C<< <> >>. In particular,
1120passing C<\*ARGV> as a parameter to a function that expects a filehandle
1121may not cause your function to automatically read the contents of all the
1122files in C<@ARGV>.
1123
a0d0e21e 1124=item $ARGV
1125
c47ff5f1 1126contains the name of the current file when reading from <>.
a0d0e21e 1127
1128=item @ARGV
1129
19799a22 1130The array @ARGV contains the command-line arguments intended for
14218588 1131the script. C<$#ARGV> is generally the number of arguments minus
19799a22 1132one, because C<$ARGV[0]> is the first argument, I<not> the program's
1133command name itself. See C<$0> for the command name.
a0d0e21e 1134
9b0e6e7a 1135=item @F
1136
1137The array @F contains the fields of each line read in when autosplit
1138mode is turned on. See L<perlrun> for the B<-a> switch. This array
1139is package-specific, and must be declared or given a full package name
1140if not in package main when running under C<strict 'vars'>.
1141
a0d0e21e 1142=item @INC
1143
19799a22 1144The array @INC contains the list of places that the C<do EXPR>,
1145C<require>, or C<use> constructs look for their library files. It
1146initially consists of the arguments to any B<-I> command-line
1147switches, followed by the default Perl library, probably
1148F</usr/local/lib/perl>, followed by ".", to represent the current
1149directory. If you need to modify this at runtime, you should use
1150the C<use lib> pragma to get the machine-dependent library properly
1151loaded also:
a0d0e21e 1152
cb1a09d0 1153 use lib '/mypath/libdir/';
1154 use SomeMod;
303f2f76 1155
d54b56d5 1156You can also insert hooks into the file inclusion system by putting Perl
1157code directly into @INC. Those hooks may be subroutine references, array
1158references or blessed objects. See L<perlfunc/require> for details.
1159
fb73857a 1160=item @_
1161
1162Within a subroutine the array @_ contains the parameters passed to that
19799a22 1163subroutine. See L<perlsub>.
fb73857a 1164
a0d0e21e 1165=item %INC
1166
19799a22 1167The hash %INC contains entries for each filename included via the
1168C<do>, C<require>, or C<use> operators. The key is the filename
1169you specified (with module names converted to pathnames), and the
14218588 1170value is the location of the file found. The C<require>
87275199 1171operator uses this hash to determine whether a particular file has
19799a22 1172already been included.
a0d0e21e 1173
89ccab8c 1174If the file was loaded via a hook (e.g. a subroutine reference, see
1175L<perlfunc/require> for a description of these hooks), this hook is
9ae8cd5b 1176by default inserted into %INC in place of a filename. Note, however,
1177that the hook may have set the %INC entry by itself to provide some more
1178specific info.
44f0be63 1179
b687b08b 1180=item %ENV
1181
1182=item $ENV{expr}
a0d0e21e 1183
1184The hash %ENV contains your current environment. Setting a
19799a22 1185value in C<ENV> changes the environment for any child processes
1186you subsequently fork() off.
a0d0e21e 1187
b687b08b 1188=item %SIG
1189
1190=item $SIG{expr}
a0d0e21e 1191
14218588 1192The hash %SIG contains signal handlers for signals. For example:
a0d0e21e 1193
1194 sub handler { # 1st argument is signal name
fb73857a 1195 my($sig) = @_;
a0d0e21e 1196 print "Caught a SIG$sig--shutting down\n";
1197 close(LOG);
1198 exit(0);
1199 }
1200
fb73857a 1201 $SIG{'INT'} = \&handler;
1202 $SIG{'QUIT'} = \&handler;
a0d0e21e 1203 ...
19799a22 1204 $SIG{'INT'} = 'DEFAULT'; # restore default action
a0d0e21e 1205 $SIG{'QUIT'} = 'IGNORE'; # ignore SIGQUIT
1206
f648820c 1207Using a value of C<'IGNORE'> usually has the effect of ignoring the
1208signal, except for the C<CHLD> signal. See L<perlipc> for more about
1209this special case.
1210
19799a22 1211Here are some other examples:
a0d0e21e 1212
fb73857a 1213 $SIG{"PIPE"} = "Plumber"; # assumes main::Plumber (not recommended)
a0d0e21e 1214 $SIG{"PIPE"} = \&Plumber; # just fine; assume current Plumber
19799a22 1215 $SIG{"PIPE"} = *Plumber; # somewhat esoteric
a0d0e21e 1216 $SIG{"PIPE"} = Plumber(); # oops, what did Plumber() return??
1217
19799a22 1218Be sure not to use a bareword as the name of a signal handler,
1219lest you inadvertently call it.
748a9306 1220
44a8e56a 1221If your system has the sigaction() function then signal handlers are
1222installed using it. This means you get reliable signal handling. If
1223your system has the SA_RESTART flag it is used when signals handlers are
19799a22 1224installed. This means that system calls for which restarting is supported
44a8e56a 1225continue rather than returning when a signal arrives. If you want your
1226system calls to be interrupted by signal delivery then do something like
1227this:
1228
1229 use POSIX ':signal_h';
1230
1231 my $alarm = 0;
1232 sigaction SIGALRM, new POSIX::SigAction sub { $alarm = 1 }
1233 or die "Error setting SIGALRM handler: $!\n";
1234
1235See L<POSIX>.
1236
748a9306 1237Certain internal hooks can be also set using the %SIG hash. The
a8f8344d 1238routine indicated by C<$SIG{__WARN__}> is called when a warning message is
748a9306 1239about to be printed. The warning message is passed as the first
1240argument. The presence of a __WARN__ hook causes the ordinary printing
1241of warnings to STDERR to be suppressed. You can use this to save warnings
1242in a variable, or turn warnings into fatal errors, like this:
1243
1244 local $SIG{__WARN__} = sub { die $_[0] };
1245 eval $proggie;
1246
a8f8344d 1247The routine indicated by C<$SIG{__DIE__}> is called when a fatal exception
748a9306 1248is about to be thrown. The error message is passed as the first
1249argument. When a __DIE__ hook routine returns, the exception
1250processing continues as it would have in the absence of the hook,
cb1a09d0 1251unless the hook routine itself exits via a C<goto>, a loop exit, or a die().
774d564b 1252The C<__DIE__> handler is explicitly disabled during the call, so that you
fb73857a 1253can die from a C<__DIE__> handler. Similarly for C<__WARN__>.
1254
19799a22 1255Due to an implementation glitch, the C<$SIG{__DIE__}> hook is called
1256even inside an eval(). Do not use this to rewrite a pending exception
1257in C<$@>, or as a bizarre substitute for overriding CORE::GLOBAL::die().
1258This strange action at a distance may be fixed in a future release
1259so that C<$SIG{__DIE__}> is only called if your program is about
1260to exit, as was the original intent. Any other use is deprecated.
1261
1262C<__DIE__>/C<__WARN__> handlers are very special in one respect:
1263they may be called to report (probable) errors found by the parser.
1264In such a case the parser may be in inconsistent state, so any
1265attempt to evaluate Perl code from such a handler will probably
1266result in a segfault. This means that warnings or errors that
1267result from parsing Perl should be used with extreme caution, like
1268this:
fb73857a 1269
1270 require Carp if defined $^S;
1271 Carp::confess("Something wrong") if defined &Carp::confess;
1272 die "Something wrong, but could not load Carp to give backtrace...
1273 To see backtrace try starting Perl with -MCarp switch";
1274
1275Here the first line will load Carp I<unless> it is the parser who
1276called the handler. The second line will print backtrace and die if
1277Carp was available. The third line will be executed only if Carp was
1278not available.
1279
19799a22 1280See L<perlfunc/die>, L<perlfunc/warn>, L<perlfunc/eval>, and
4438c4b7 1281L<warnings> for additional information.
68dc0745 1282
a0d0e21e 1283=back
55602bd2 1284
1285=head2 Error Indicators
1286
19799a22 1287The variables C<$@>, C<$!>, C<$^E>, and C<$?> contain information
1288about different types of error conditions that may appear during
1289execution of a Perl program. The variables are shown ordered by
1290the "distance" between the subsystem which reported the error and
1291the Perl process. They correspond to errors detected by the Perl
1292interpreter, C library, operating system, or an external program,
1293respectively.
55602bd2 1294
1295To illustrate the differences between these variables, consider the
19799a22 1296following Perl expression, which uses a single-quoted string:
55602bd2 1297
19799a22 1298 eval q{
22d0716c 1299 open my $pipe, "/cdrom/install |" or die $!;
1300 my @res = <$pipe>;
1301 close $pipe or die "bad pipe: $?, $!";
19799a22 1302 };
55602bd2 1303
1304After execution of this statement all 4 variables may have been set.
1305
19799a22 1306C<$@> is set if the string to be C<eval>-ed did not compile (this
1307may happen if C<open> or C<close> were imported with bad prototypes),
1308or if Perl code executed during evaluation die()d . In these cases
1309the value of $@ is the compile error, or the argument to C<die>
1310(which will interpolate C<$!> and C<$?>!). (See also L<Fatal>,
1311though.)
1312
c47ff5f1 1313When the eval() expression above is executed, open(), C<< <PIPE> >>,
19799a22 1314and C<close> are translated to calls in the C run-time library and
1315thence to the operating system kernel. C<$!> is set to the C library's
1316C<errno> if one of these calls fails.
1317
1318Under a few operating systems, C<$^E> may contain a more verbose
1319error indicator, such as in this case, "CDROM tray not closed."
14218588 1320Systems that do not support extended error messages leave C<$^E>
19799a22 1321the same as C<$!>.
1322
1323Finally, C<$?> may be set to non-0 value if the external program
1324F</cdrom/install> fails. The upper eight bits reflect specific
1325error conditions encountered by the program (the program's exit()
1326value). The lower eight bits reflect mode of failure, like signal
1327death and core dump information See wait(2) for details. In
1328contrast to C<$!> and C<$^E>, which are set only if error condition
1329is detected, the variable C<$?> is set on each C<wait> or pipe
1330C<close>, overwriting the old value. This is more like C<$@>, which
1331on every eval() is always set on failure and cleared on success.
2b92dfce 1332
19799a22 1333For more details, see the individual descriptions at C<$@>, C<$!>, C<$^E>,
1334and C<$?>.
2b92dfce 1335
1336=head2 Technical Note on the Syntax of Variable Names
1337
19799a22 1338Variable names in Perl can have several formats. Usually, they
1339must begin with a letter or underscore, in which case they can be
1340arbitrarily long (up to an internal limit of 251 characters) and
1341may contain letters, digits, underscores, or the special sequence
1342C<::> or C<'>. In this case, the part before the last C<::> or
1343C<'> is taken to be a I<package qualifier>; see L<perlmod>.
2b92dfce 1344
1345Perl variable names may also be a sequence of digits or a single
1346punctuation or control character. These names are all reserved for
19799a22 1347special uses by Perl; for example, the all-digits names are used
1348to hold data captured by backreferences after a regular expression
1349match. Perl has a special syntax for the single-control-character
1350names: It understands C<^X> (caret C<X>) to mean the control-C<X>
1351character. For example, the notation C<$^W> (dollar-sign caret
1352C<W>) is the scalar variable whose name is the single character
1353control-C<W>. This is better than typing a literal control-C<W>
1354into your program.
2b92dfce 1355
87275199 1356Finally, new in Perl 5.6, Perl variable names may be alphanumeric
19799a22 1357strings that begin with control characters (or better yet, a caret).
1358These variables must be written in the form C<${^Foo}>; the braces
1359are not optional. C<${^Foo}> denotes the scalar variable whose
1360name is a control-C<F> followed by two C<o>'s. These variables are
1361reserved for future special uses by Perl, except for the ones that
1362begin with C<^_> (control-underscore or caret-underscore). No
1363control-character name that begins with C<^_> will acquire a special
1364meaning in any future version of Perl; such names may therefore be
1365used safely in programs. C<$^_> itself, however, I<is> reserved.
1366
1367Perl identifiers that begin with digits, control characters, or
2b92dfce 1368punctuation characters are exempt from the effects of the C<package>
1369declaration and are always forced to be in package C<main>. A few
1370other names are also exempt:
1371
1372 ENV STDIN
1373 INC STDOUT
1374 ARGV STDERR
1375 ARGVOUT
1376 SIG
1377
1378In particular, the new special C<${^_XYZ}> variables are always taken
19799a22 1379to be in package C<main>, regardless of any C<package> declarations
2b92dfce 1380presently in scope.
1381
19799a22 1382=head1 BUGS
1383
1384Due to an unfortunate accident of Perl's implementation, C<use
1385English> imposes a considerable performance penalty on all regular
1386expression matches in a program, regardless of whether they occur
1387in the scope of C<use English>. For that reason, saying C<use
1388English> in libraries is strongly discouraged. See the
1389Devel::SawAmpersand module documentation from CPAN
a93751fa 1390(http://www.cpan.org/modules/by-module/Devel/)
19799a22 1391for more information.
2b92dfce 1392
19799a22 1393Having to even think about the C<$^S> variable in your exception
1394handlers is simply wrong. C<$SIG{__DIE__}> as currently implemented
1395invites grievous and difficult to track down errors. Avoid it
1396and use an C<END{}> or CORE::GLOBAL::die override instead.