Integrate mainline. Builds lots of sv.h/embed.h redef warnings
[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
19799a22 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
19799a22 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
19799a22 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
264This is primarly 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
a0d0e21e 657=item $OS_ERROR
658
659=item $ERRNO
660
661=item $!
662
19799a22 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 673Also see L<Error Indicators>.
674
5c055ba3 675=item $EXTENDED_OS_ERROR
676
677=item $^E
678
22fae026 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 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 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 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 702Also see L<Error Indicators>.
703
a0d0e21e 704=item $EVAL_ERROR
705
706=item $@
707
4a280ebe 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 717Also see L<Error Indicators>.
718
a0d0e21e 719=item $PROCESS_ID
720
721=item $PID
722
723=item $$
724
19799a22 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 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 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 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 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 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 767the same as the first number.
768
19799a22 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 773You can change both the real gid and the effective gid at the same
774time by using POSIX::setgid().
775
19799a22 776(Mnemonic: parentheses are used to I<group> things. The real gid is the
777group you I<left>, if you're running setgid.)
a0d0e21e 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 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 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 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 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 805machines that support the corresponding I<set[re][ug]id()> routine. C<$(>
806and C<$)> can be swapped only on machines supporting setregid().
a0d0e21e 807
808=item $PROGRAM_NAME
809
810=item $0
811
19799a22 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 816(Mnemonic: same as B<sh> and B<ksh>.)
817
4bc88a62 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 823=item $[
824
825The index of the first element in an array, and of the first character
19799a22 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 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 835=item $]
836
54310121 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 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 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 852=item $COMPILING
853
854=item $^C
855
19799a22 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 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 879C<$^F> when the corresponding file, pipe, or socket was opened, not the
880time of the exec().
a0d0e21e 881
6e2995f4 882=item $^H
883
0462a1ab 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 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 940=item $^M
941
19799a22 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 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 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 961is identical to C<$Config{'osname'}>. See also L<Config> and the
962B<-V> command-line switch documented in L<perlrun>.
5c055ba3 963
a0d0e21e 964=item $PERLDB
965
966=item $^P
967
19799a22 968The internal variable for debugging support. The meanings of the
969various bits are subject to change, but currently indicate:
84902520 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 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 1014=back
1015
19799a22 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 1019=item $LAST_REGEXP_CODE_RESULT
1020
b9ac3b5b 1021=item $^R
1022
19799a22 1023The result of evaluation of the last successful C<(?{ code })>
1024regular expression assertion (see L<perlre>). May be written to.
b9ac3b5b 1025
66558a10 1026=item $EXCEPTIONS_BEING_CAUGHT
1027
fb73857a 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 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 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 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 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 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 1063=item $WARNING
1064
1065=item $^W
1066
19799a22 1067The current value of the warning switch, initially true if B<-w>
1068was used, false otherwise, but directly modifiable. (Mnemonic:
4438c4b7 1069related to the B<-w> switch.) See also L<warnings>.
1070
6a818117 1071=item ${^WARNING_BITS}
4438c4b7 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 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 1088The C<bytes> pragma always overrides the effect of this flag in the current
1089lexical scope. See L<bytes>.
46487f74 1090
a0d0e21e 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 1097
2d84a16a 1098=item ARGV
1099
1100The special filehandle that iterates over command-line filenames in
1101C<@ARGV>. Usually written as the null filehandle in the angle operator
1102C<< <> >>. Note that currently C<ARGV> only has its magical effect
1103within the C<< <> >> operator; elsewhere it is just a plain filehandle
1104corresponding to the last file opened by C<< <> >>. In particular,
1105passing C<\*ARGV> as a parameter to a function that expects a filehandle
1106may not cause your function to automatically read the contents of all the
1107files in C<@ARGV>.
1108
a0d0e21e 1109=item $ARGV
1110
c47ff5f1 1111contains the name of the current file when reading from <>.
a0d0e21e 1112
1113=item @ARGV
1114
19799a22 1115The array @ARGV contains the command-line arguments intended for
14218588 1116the script. C<$#ARGV> is generally the number of arguments minus
19799a22 1117one, because C<$ARGV[0]> is the first argument, I<not> the program's
1118command name itself. See C<$0> for the command name.
a0d0e21e 1119
9b0e6e7a 1120=item @F
1121
1122The array @F contains the fields of each line read in when autosplit
1123mode is turned on. See L<perlrun> for the B<-a> switch. This array
1124is package-specific, and must be declared or given a full package name
1125if not in package main when running under C<strict 'vars'>.
1126
a0d0e21e 1127=item @INC
1128
19799a22 1129The array @INC contains the list of places that the C<do EXPR>,
1130C<require>, or C<use> constructs look for their library files. It
1131initially consists of the arguments to any B<-I> command-line
1132switches, followed by the default Perl library, probably
1133F</usr/local/lib/perl>, followed by ".", to represent the current
1134directory. If you need to modify this at runtime, you should use
1135the C<use lib> pragma to get the machine-dependent library properly
1136loaded also:
a0d0e21e 1137
cb1a09d0 1138 use lib '/mypath/libdir/';
1139 use SomeMod;
303f2f76 1140
d54b56d5 1141You can also insert hooks into the file inclusion system by putting Perl
1142code directly into @INC. Those hooks may be subroutine references, array
1143references or blessed objects. See L<perlfunc/require> for details.
1144
fb73857a 1145=item @_
1146
1147Within a subroutine the array @_ contains the parameters passed to that
19799a22 1148subroutine. See L<perlsub>.
fb73857a 1149
a0d0e21e 1150=item %INC
1151
19799a22 1152The hash %INC contains entries for each filename included via the
1153C<do>, C<require>, or C<use> operators. The key is the filename
1154you specified (with module names converted to pathnames), and the
14218588 1155value is the location of the file found. The C<require>
87275199 1156operator uses this hash to determine whether a particular file has
19799a22 1157already been included.
a0d0e21e 1158
89ccab8c 1159If the file was loaded via a hook (e.g. a subroutine reference, see
1160L<perlfunc/require> for a description of these hooks), this hook is
1161inserted into %INC in place of a filename.
44f0be63 1162
b687b08b 1163=item %ENV
1164
1165=item $ENV{expr}
a0d0e21e 1166
1167The hash %ENV contains your current environment. Setting a
19799a22 1168value in C<ENV> changes the environment for any child processes
1169you subsequently fork() off.
a0d0e21e 1170
b687b08b 1171=item %SIG
1172
1173=item $SIG{expr}
a0d0e21e 1174
14218588 1175The hash %SIG contains signal handlers for signals. For example:
a0d0e21e 1176
1177 sub handler { # 1st argument is signal name
fb73857a 1178 my($sig) = @_;
a0d0e21e 1179 print "Caught a SIG$sig--shutting down\n";
1180 close(LOG);
1181 exit(0);
1182 }
1183
fb73857a 1184 $SIG{'INT'} = \&handler;
1185 $SIG{'QUIT'} = \&handler;
a0d0e21e 1186 ...
19799a22 1187 $SIG{'INT'} = 'DEFAULT'; # restore default action
a0d0e21e 1188 $SIG{'QUIT'} = 'IGNORE'; # ignore SIGQUIT
1189
f648820c 1190Using a value of C<'IGNORE'> usually has the effect of ignoring the
1191signal, except for the C<CHLD> signal. See L<perlipc> for more about
1192this special case.
1193
19799a22 1194Here are some other examples:
a0d0e21e 1195
fb73857a 1196 $SIG{"PIPE"} = "Plumber"; # assumes main::Plumber (not recommended)
a0d0e21e 1197 $SIG{"PIPE"} = \&Plumber; # just fine; assume current Plumber
19799a22 1198 $SIG{"PIPE"} = *Plumber; # somewhat esoteric
a0d0e21e 1199 $SIG{"PIPE"} = Plumber(); # oops, what did Plumber() return??
1200
19799a22 1201Be sure not to use a bareword as the name of a signal handler,
1202lest you inadvertently call it.
748a9306 1203
44a8e56a 1204If your system has the sigaction() function then signal handlers are
1205installed using it. This means you get reliable signal handling. If
1206your system has the SA_RESTART flag it is used when signals handlers are
19799a22 1207installed. This means that system calls for which restarting is supported
44a8e56a 1208continue rather than returning when a signal arrives. If you want your
1209system calls to be interrupted by signal delivery then do something like
1210this:
1211
1212 use POSIX ':signal_h';
1213
1214 my $alarm = 0;
1215 sigaction SIGALRM, new POSIX::SigAction sub { $alarm = 1 }
1216 or die "Error setting SIGALRM handler: $!\n";
1217
1218See L<POSIX>.
1219
748a9306 1220Certain internal hooks can be also set using the %SIG hash. The
a8f8344d 1221routine indicated by C<$SIG{__WARN__}> is called when a warning message is
748a9306 1222about to be printed. The warning message is passed as the first
1223argument. The presence of a __WARN__ hook causes the ordinary printing
1224of warnings to STDERR to be suppressed. You can use this to save warnings
1225in a variable, or turn warnings into fatal errors, like this:
1226
1227 local $SIG{__WARN__} = sub { die $_[0] };
1228 eval $proggie;
1229
a8f8344d 1230The routine indicated by C<$SIG{__DIE__}> is called when a fatal exception
748a9306 1231is about to be thrown. The error message is passed as the first
1232argument. When a __DIE__ hook routine returns, the exception
1233processing continues as it would have in the absence of the hook,
cb1a09d0 1234unless the hook routine itself exits via a C<goto>, a loop exit, or a die().
774d564b 1235The C<__DIE__> handler is explicitly disabled during the call, so that you
fb73857a 1236can die from a C<__DIE__> handler. Similarly for C<__WARN__>.
1237
19799a22 1238Due to an implementation glitch, the C<$SIG{__DIE__}> hook is called
1239even inside an eval(). Do not use this to rewrite a pending exception
1240in C<$@>, or as a bizarre substitute for overriding CORE::GLOBAL::die().
1241This strange action at a distance may be fixed in a future release
1242so that C<$SIG{__DIE__}> is only called if your program is about
1243to exit, as was the original intent. Any other use is deprecated.
1244
1245C<__DIE__>/C<__WARN__> handlers are very special in one respect:
1246they may be called to report (probable) errors found by the parser.
1247In such a case the parser may be in inconsistent state, so any
1248attempt to evaluate Perl code from such a handler will probably
1249result in a segfault. This means that warnings or errors that
1250result from parsing Perl should be used with extreme caution, like
1251this:
fb73857a 1252
1253 require Carp if defined $^S;
1254 Carp::confess("Something wrong") if defined &Carp::confess;
1255 die "Something wrong, but could not load Carp to give backtrace...
1256 To see backtrace try starting Perl with -MCarp switch";
1257
1258Here the first line will load Carp I<unless> it is the parser who
1259called the handler. The second line will print backtrace and die if
1260Carp was available. The third line will be executed only if Carp was
1261not available.
1262
19799a22 1263See L<perlfunc/die>, L<perlfunc/warn>, L<perlfunc/eval>, and
4438c4b7 1264L<warnings> for additional information.
68dc0745 1265
a0d0e21e 1266=back
55602bd2 1267
1268=head2 Error Indicators
1269
19799a22 1270The variables C<$@>, C<$!>, C<$^E>, and C<$?> contain information
1271about different types of error conditions that may appear during
1272execution of a Perl program. The variables are shown ordered by
1273the "distance" between the subsystem which reported the error and
1274the Perl process. They correspond to errors detected by the Perl
1275interpreter, C library, operating system, or an external program,
1276respectively.
55602bd2 1277
1278To illustrate the differences between these variables, consider the
19799a22 1279following Perl expression, which uses a single-quoted string:
55602bd2 1280
19799a22 1281 eval q{
22d0716c 1282 open my $pipe, "/cdrom/install |" or die $!;
1283 my @res = <$pipe>;
1284 close $pipe or die "bad pipe: $?, $!";
19799a22 1285 };
55602bd2 1286
1287After execution of this statement all 4 variables may have been set.
1288
19799a22 1289C<$@> is set if the string to be C<eval>-ed did not compile (this
1290may happen if C<open> or C<close> were imported with bad prototypes),
1291or if Perl code executed during evaluation die()d . In these cases
1292the value of $@ is the compile error, or the argument to C<die>
1293(which will interpolate C<$!> and C<$?>!). (See also L<Fatal>,
1294though.)
1295
c47ff5f1 1296When the eval() expression above is executed, open(), C<< <PIPE> >>,
19799a22 1297and C<close> are translated to calls in the C run-time library and
1298thence to the operating system kernel. C<$!> is set to the C library's
1299C<errno> if one of these calls fails.
1300
1301Under a few operating systems, C<$^E> may contain a more verbose
1302error indicator, such as in this case, "CDROM tray not closed."
14218588 1303Systems that do not support extended error messages leave C<$^E>
19799a22 1304the same as C<$!>.
1305
1306Finally, C<$?> may be set to non-0 value if the external program
1307F</cdrom/install> fails. The upper eight bits reflect specific
1308error conditions encountered by the program (the program's exit()
1309value). The lower eight bits reflect mode of failure, like signal
1310death and core dump information See wait(2) for details. In
1311contrast to C<$!> and C<$^E>, which are set only if error condition
1312is detected, the variable C<$?> is set on each C<wait> or pipe
1313C<close>, overwriting the old value. This is more like C<$@>, which
1314on every eval() is always set on failure and cleared on success.
2b92dfce 1315
19799a22 1316For more details, see the individual descriptions at C<$@>, C<$!>, C<$^E>,
1317and C<$?>.
2b92dfce 1318
1319=head2 Technical Note on the Syntax of Variable Names
1320
19799a22 1321Variable names in Perl can have several formats. Usually, they
1322must begin with a letter or underscore, in which case they can be
1323arbitrarily long (up to an internal limit of 251 characters) and
1324may contain letters, digits, underscores, or the special sequence
1325C<::> or C<'>. In this case, the part before the last C<::> or
1326C<'> is taken to be a I<package qualifier>; see L<perlmod>.
2b92dfce 1327
1328Perl variable names may also be a sequence of digits or a single
1329punctuation or control character. These names are all reserved for
19799a22 1330special uses by Perl; for example, the all-digits names are used
1331to hold data captured by backreferences after a regular expression
1332match. Perl has a special syntax for the single-control-character
1333names: It understands C<^X> (caret C<X>) to mean the control-C<X>
1334character. For example, the notation C<$^W> (dollar-sign caret
1335C<W>) is the scalar variable whose name is the single character
1336control-C<W>. This is better than typing a literal control-C<W>
1337into your program.
2b92dfce 1338
87275199 1339Finally, new in Perl 5.6, Perl variable names may be alphanumeric
19799a22 1340strings that begin with control characters (or better yet, a caret).
1341These variables must be written in the form C<${^Foo}>; the braces
1342are not optional. C<${^Foo}> denotes the scalar variable whose
1343name is a control-C<F> followed by two C<o>'s. These variables are
1344reserved for future special uses by Perl, except for the ones that
1345begin with C<^_> (control-underscore or caret-underscore). No
1346control-character name that begins with C<^_> will acquire a special
1347meaning in any future version of Perl; such names may therefore be
1348used safely in programs. C<$^_> itself, however, I<is> reserved.
1349
1350Perl identifiers that begin with digits, control characters, or
2b92dfce 1351punctuation characters are exempt from the effects of the C<package>
1352declaration and are always forced to be in package C<main>. A few
1353other names are also exempt:
1354
1355 ENV STDIN
1356 INC STDOUT
1357 ARGV STDERR
1358 ARGVOUT
1359 SIG
1360
1361In particular, the new special C<${^_XYZ}> variables are always taken
19799a22 1362to be in package C<main>, regardless of any C<package> declarations
2b92dfce 1363presently in scope.
1364
19799a22 1365=head1 BUGS
1366
1367Due to an unfortunate accident of Perl's implementation, C<use
1368English> imposes a considerable performance penalty on all regular
1369expression matches in a program, regardless of whether they occur
1370in the scope of C<use English>. For that reason, saying C<use
1371English> in libraries is strongly discouraged. See the
1372Devel::SawAmpersand module documentation from CPAN
6cecdcac 1373(http://www.perl.com/CPAN/modules/by-module/Devel/)
19799a22 1374for more information.
2b92dfce 1375
19799a22 1376Having to even think about the C<$^S> variable in your exception
1377handlers is simply wrong. C<$SIG{__DIE__}> as currently implemented
1378invites grievous and difficult to track down errors. Avoid it
1379and use an C<END{}> or CORE::GLOBAL::die override instead.