Undeprecating $]
[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
0c8d858b 847The floating point representation can sometimes lead to inaccurate
848numeric comparisons. See C<$^V> for a more modern representation of
849the Perl version that allows accurate string comparisons.
16070b82 850
305aace0 851=item $COMPILING
852
853=item $^C
854
19799a22 855The current value of the flag associated with the B<-c> switch.
856Mainly of use with B<-MO=...> to allow code to alter its behavior
857when being compiled, such as for example to AUTOLOAD at compile
858time rather than normal, deferred loading. See L<perlcc>. Setting
859C<$^C = 1> is similar to calling C<B::minus_c>.
305aace0 860
a0d0e21e 861=item $DEBUGGING
862
863=item $^D
864
865The current value of the debugging flags. (Mnemonic: value of B<-D>
866switch.)
867
868=item $SYSTEM_FD_MAX
869
870=item $^F
871
872The maximum system file descriptor, ordinarily 2. System file
873descriptors are passed to exec()ed processes, while higher file
874descriptors are not. Also, during an open(), system file descriptors are
875preserved even if the open() fails. (Ordinary file descriptors are
19799a22 876closed before the open() is attempted.) The close-on-exec
a0d0e21e 877status of a file descriptor will be decided according to the value of
8d2a6795 878C<$^F> when the corresponding file, pipe, or socket was opened, not the
879time of the exec().
a0d0e21e 880
6e2995f4 881=item $^H
882
0462a1ab 883WARNING: This variable is strictly for internal use only. Its availability,
884behavior, and contents are subject to change without notice.
885
886This variable contains compile-time hints for the Perl interpreter. At the
887end of compilation of a BLOCK the value of this variable is restored to the
888value when the interpreter started to compile the BLOCK.
889
890When perl begins to parse any block construct that provides a lexical scope
891(e.g., eval body, required file, subroutine body, loop body, or conditional
892block), the existing value of $^H is saved, but its value is left unchanged.
893When the compilation of the block is completed, it regains the saved value.
894Between the points where its value is saved and restored, code that
895executes within BEGIN blocks is free to change the value of $^H.
896
897This behavior provides the semantic of lexical scoping, and is used in,
898for instance, the C<use strict> pragma.
899
900The contents should be an integer; different bits of it are used for
901different pragmatic flags. Here's an example:
902
903 sub add_100 { $^H |= 0x100 }
904
905 sub foo {
906 BEGIN { add_100() }
907 bar->baz($boon);
908 }
909
910Consider what happens during execution of the BEGIN block. At this point
911the BEGIN block has already been compiled, but the body of foo() is still
912being compiled. The new value of $^H will therefore be visible only while
913the body of foo() is being compiled.
914
915Substitution of the above BEGIN block with:
916
917 BEGIN { require strict; strict->import('vars') }
918
919demonstrates how C<use strict 'vars'> is implemented. Here's a conditional
920version of the same lexical pragma:
921
922 BEGIN { require strict; strict->import('vars') if $condition }
923
924=item %^H
925
926WARNING: This variable is strictly for internal use only. Its availability,
927behavior, and contents are subject to change without notice.
928
929The %^H hash provides the same scoping semantic as $^H. This makes it
930useful for implementation of lexically scoped pragmas.
6e2995f4 931
a0d0e21e 932=item $INPLACE_EDIT
933
934=item $^I
935
936The current value of the inplace-edit extension. Use C<undef> to disable
937inplace editing. (Mnemonic: value of B<-i> switch.)
938
fb73857a 939=item $^M
940
19799a22 941By default, running out of memory is an untrappable, fatal error.
942However, if suitably built, Perl can use the contents of C<$^M>
943as an emergency memory pool after die()ing. Suppose that your Perl
944were compiled with -DPERL_EMERGENCY_SBRK and used Perl's malloc.
945Then
fb73857a 946
19799a22 947 $^M = 'a' x (1 << 16);
fb73857a 948
51ee6500 949would allocate a 64K buffer for use in an emergency. See the
19799a22 950F<INSTALL> file in the Perl distribution for information on how to
951enable this option. To discourage casual use of this advanced
4ec0190b 952feature, there is no L<English|English> long name for this variable.
fb73857a 953
5c055ba3 954=item $OSNAME
6e2995f4 955
5c055ba3 956=item $^O
957
958The name of the operating system under which this copy of Perl was
959built, as determined during the configuration process. The value
19799a22 960is identical to C<$Config{'osname'}>. See also L<Config> and the
961B<-V> command-line switch documented in L<perlrun>.
5c055ba3 962
a0d0e21e 963=item $PERLDB
964
965=item $^P
966
19799a22 967The internal variable for debugging support. The meanings of the
968various bits are subject to change, but currently indicate:
84902520 969
970=over 6
971
972=item 0x01
973
974Debug subroutine enter/exit.
975
976=item 0x02
977
978Line-by-line debugging.
979
980=item 0x04
981
982Switch off optimizations.
983
984=item 0x08
985
986Preserve more data for future interactive inspections.
987
988=item 0x10
989
990Keep info about source lines on which a subroutine is defined.
991
992=item 0x20
993
994Start with single-step on.
995
83ee9e09 996=item 0x40
997
998Use subroutine address instead of name when reporting.
999
1000=item 0x80
1001
1002Report C<goto &subroutine> as well.
1003
1004=item 0x100
1005
1006Provide informative "file" names for evals based on the place they were compiled.
1007
1008=item 0x200
1009
1010Provide informative names to anonymous subroutines based on the place they
1011were compiled.
1012
84902520 1013=back
1014
19799a22 1015Some bits may be relevant at compile-time only, some at
1016run-time only. This is a new mechanism and the details may change.
a0d0e21e 1017
66558a10 1018=item $LAST_REGEXP_CODE_RESULT
1019
b9ac3b5b 1020=item $^R
1021
19799a22 1022The result of evaluation of the last successful C<(?{ code })>
1023regular expression assertion (see L<perlre>). May be written to.
b9ac3b5b 1024
66558a10 1025=item $EXCEPTIONS_BEING_CAUGHT
1026
fb73857a 1027=item $^S
1028
1029Current state of the interpreter. Undefined if parsing of the current
1030module/eval is not finished (may happen in $SIG{__DIE__} and
19799a22 1031$SIG{__WARN__} handlers). True if inside an eval(), otherwise false.
fb73857a 1032
a0d0e21e 1033=item $BASETIME
1034
1035=item $^T
1036
19799a22 1037The time at which the program began running, in seconds since the
5f05dabc 1038epoch (beginning of 1970). The values returned by the B<-M>, B<-A>,
19799a22 1039and B<-C> filetests are based on this value.
a0d0e21e 1040
7c36658b 1041=item ${^TAINT}
1042
c212f17f 1043Reflects if taint mode is on or off (i.e. if the program was run with
7c36658b 1044B<-T> or not). True for on, false for off.
1045
44dcb63b 1046=item $PERL_VERSION
b459063d 1047
16070b82 1048=item $^V
1049
1050The revision, version, and subversion of the Perl interpreter, represented
da2094fd 1051as a string composed of characters with those ordinals. Thus in Perl v5.6.0
44dcb63b 1052it equals C<chr(5) . chr(6) . chr(0)> and will return true for
1053C<$^V eq v5.6.0>. Note that the characters in this string value can
1054potentially be in Unicode range.
16070b82 1055
1056This can be used to determine whether the Perl interpreter executing a
1057script is in the right range of versions. (Mnemonic: use ^V for Version
44dcb63b 1058Control.) Example:
16070b82 1059
3fd4402b 1060 warn "No \"our\" declarations!\n" if $^V and $^V lt v5.6.0;
16070b82 1061
44dcb63b 1062See the documentation of C<use VERSION> and C<require VERSION>
16070b82 1063for a convenient way to fail if the running Perl interpreter is too old.
1064
1065See also C<$]> for an older representation of the Perl version.
1066
a0d0e21e 1067=item $WARNING
1068
1069=item $^W
1070
19799a22 1071The current value of the warning switch, initially true if B<-w>
1072was used, false otherwise, but directly modifiable. (Mnemonic:
4438c4b7 1073related to the B<-w> switch.) See also L<warnings>.
1074
6a818117 1075=item ${^WARNING_BITS}
4438c4b7 1076
1077The current set of warning checks enabled by the C<use warnings> pragma.
1078See the documentation of C<warnings> for more details.
a0d0e21e 1079
46487f74 1080=item ${^WIDE_SYSTEM_CALLS}
1081
1082Global flag that enables system calls made by Perl to use wide character
1083APIs native to the system, if available. This is currently only implemented
1084on the Windows platform.
1085
1086This can also be enabled from the command line using the C<-C> switch.
1087
1088The initial value is typically C<0> for compatibility with Perl versions
1089earlier than 5.6, but may be automatically set to C<1> by Perl if the system
1090provides a user-settable default (e.g., C<$ENV{LC_CTYPE}>).
1091
8058d7ab 1092The C<bytes> pragma always overrides the effect of this flag in the current
1093lexical scope. See L<bytes>.
46487f74 1094
a0d0e21e 1095=item $EXECUTABLE_NAME
1096
1097=item $^X
1098
1099The name that the Perl binary itself was executed as, from C's C<argv[0]>.
19799a22 1100This may not be a full pathname, nor even necessarily in your path.
a0d0e21e 1101
2d84a16a 1102=item ARGV
1103
1104The special filehandle that iterates over command-line filenames in
1105C<@ARGV>. Usually written as the null filehandle in the angle operator
1106C<< <> >>. Note that currently C<ARGV> only has its magical effect
1107within the C<< <> >> operator; elsewhere it is just a plain filehandle
1108corresponding to the last file opened by C<< <> >>. In particular,
1109passing C<\*ARGV> as a parameter to a function that expects a filehandle
1110may not cause your function to automatically read the contents of all the
1111files in C<@ARGV>.
1112
a0d0e21e 1113=item $ARGV
1114
c47ff5f1 1115contains the name of the current file when reading from <>.
a0d0e21e 1116
1117=item @ARGV
1118
19799a22 1119The array @ARGV contains the command-line arguments intended for
14218588 1120the script. C<$#ARGV> is generally the number of arguments minus
19799a22 1121one, because C<$ARGV[0]> is the first argument, I<not> the program's
1122command name itself. See C<$0> for the command name.
a0d0e21e 1123
9b0e6e7a 1124=item @F
1125
1126The array @F contains the fields of each line read in when autosplit
1127mode is turned on. See L<perlrun> for the B<-a> switch. This array
1128is package-specific, and must be declared or given a full package name
1129if not in package main when running under C<strict 'vars'>.
1130
a0d0e21e 1131=item @INC
1132
19799a22 1133The array @INC contains the list of places that the C<do EXPR>,
1134C<require>, or C<use> constructs look for their library files. It
1135initially consists of the arguments to any B<-I> command-line
1136switches, followed by the default Perl library, probably
1137F</usr/local/lib/perl>, followed by ".", to represent the current
1138directory. If you need to modify this at runtime, you should use
1139the C<use lib> pragma to get the machine-dependent library properly
1140loaded also:
a0d0e21e 1141
cb1a09d0 1142 use lib '/mypath/libdir/';
1143 use SomeMod;
303f2f76 1144
d54b56d5 1145You can also insert hooks into the file inclusion system by putting Perl
1146code directly into @INC. Those hooks may be subroutine references, array
1147references or blessed objects. See L<perlfunc/require> for details.
1148
fb73857a 1149=item @_
1150
1151Within a subroutine the array @_ contains the parameters passed to that
19799a22 1152subroutine. See L<perlsub>.
fb73857a 1153
a0d0e21e 1154=item %INC
1155
19799a22 1156The hash %INC contains entries for each filename included via the
1157C<do>, C<require>, or C<use> operators. The key is the filename
1158you specified (with module names converted to pathnames), and the
14218588 1159value is the location of the file found. The C<require>
87275199 1160operator uses this hash to determine whether a particular file has
19799a22 1161already been included.
a0d0e21e 1162
89ccab8c 1163If the file was loaded via a hook (e.g. a subroutine reference, see
1164L<perlfunc/require> for a description of these hooks), this hook is
9ae8cd5b 1165by default inserted into %INC in place of a filename. Note, however,
1166that the hook may have set the %INC entry by itself to provide some more
1167specific info.
44f0be63 1168
b687b08b 1169=item %ENV
1170
1171=item $ENV{expr}
a0d0e21e 1172
1173The hash %ENV contains your current environment. Setting a
19799a22 1174value in C<ENV> changes the environment for any child processes
1175you subsequently fork() off.
a0d0e21e 1176
b687b08b 1177=item %SIG
1178
1179=item $SIG{expr}
a0d0e21e 1180
14218588 1181The hash %SIG contains signal handlers for signals. For example:
a0d0e21e 1182
1183 sub handler { # 1st argument is signal name
fb73857a 1184 my($sig) = @_;
a0d0e21e 1185 print "Caught a SIG$sig--shutting down\n";
1186 close(LOG);
1187 exit(0);
1188 }
1189
fb73857a 1190 $SIG{'INT'} = \&handler;
1191 $SIG{'QUIT'} = \&handler;
a0d0e21e 1192 ...
19799a22 1193 $SIG{'INT'} = 'DEFAULT'; # restore default action
a0d0e21e 1194 $SIG{'QUIT'} = 'IGNORE'; # ignore SIGQUIT
1195
f648820c 1196Using a value of C<'IGNORE'> usually has the effect of ignoring the
1197signal, except for the C<CHLD> signal. See L<perlipc> for more about
1198this special case.
1199
19799a22 1200Here are some other examples:
a0d0e21e 1201
fb73857a 1202 $SIG{"PIPE"} = "Plumber"; # assumes main::Plumber (not recommended)
a0d0e21e 1203 $SIG{"PIPE"} = \&Plumber; # just fine; assume current Plumber
19799a22 1204 $SIG{"PIPE"} = *Plumber; # somewhat esoteric
a0d0e21e 1205 $SIG{"PIPE"} = Plumber(); # oops, what did Plumber() return??
1206
19799a22 1207Be sure not to use a bareword as the name of a signal handler,
1208lest you inadvertently call it.
748a9306 1209
44a8e56a 1210If your system has the sigaction() function then signal handlers are
1211installed using it. This means you get reliable signal handling. If
1212your system has the SA_RESTART flag it is used when signals handlers are
19799a22 1213installed. This means that system calls for which restarting is supported
44a8e56a 1214continue rather than returning when a signal arrives. If you want your
1215system calls to be interrupted by signal delivery then do something like
1216this:
1217
1218 use POSIX ':signal_h';
1219
1220 my $alarm = 0;
1221 sigaction SIGALRM, new POSIX::SigAction sub { $alarm = 1 }
1222 or die "Error setting SIGALRM handler: $!\n";
1223
1224See L<POSIX>.
1225
748a9306 1226Certain internal hooks can be also set using the %SIG hash. The
a8f8344d 1227routine indicated by C<$SIG{__WARN__}> is called when a warning message is
748a9306 1228about to be printed. The warning message is passed as the first
1229argument. The presence of a __WARN__ hook causes the ordinary printing
1230of warnings to STDERR to be suppressed. You can use this to save warnings
1231in a variable, or turn warnings into fatal errors, like this:
1232
1233 local $SIG{__WARN__} = sub { die $_[0] };
1234 eval $proggie;
1235
a8f8344d 1236The routine indicated by C<$SIG{__DIE__}> is called when a fatal exception
748a9306 1237is about to be thrown. The error message is passed as the first
1238argument. When a __DIE__ hook routine returns, the exception
1239processing continues as it would have in the absence of the hook,
cb1a09d0 1240unless the hook routine itself exits via a C<goto>, a loop exit, or a die().
774d564b 1241The C<__DIE__> handler is explicitly disabled during the call, so that you
fb73857a 1242can die from a C<__DIE__> handler. Similarly for C<__WARN__>.
1243
19799a22 1244Due to an implementation glitch, the C<$SIG{__DIE__}> hook is called
1245even inside an eval(). Do not use this to rewrite a pending exception
1246in C<$@>, or as a bizarre substitute for overriding CORE::GLOBAL::die().
1247This strange action at a distance may be fixed in a future release
1248so that C<$SIG{__DIE__}> is only called if your program is about
1249to exit, as was the original intent. Any other use is deprecated.
1250
1251C<__DIE__>/C<__WARN__> handlers are very special in one respect:
1252they may be called to report (probable) errors found by the parser.
1253In such a case the parser may be in inconsistent state, so any
1254attempt to evaluate Perl code from such a handler will probably
1255result in a segfault. This means that warnings or errors that
1256result from parsing Perl should be used with extreme caution, like
1257this:
fb73857a 1258
1259 require Carp if defined $^S;
1260 Carp::confess("Something wrong") if defined &Carp::confess;
1261 die "Something wrong, but could not load Carp to give backtrace...
1262 To see backtrace try starting Perl with -MCarp switch";
1263
1264Here the first line will load Carp I<unless> it is the parser who
1265called the handler. The second line will print backtrace and die if
1266Carp was available. The third line will be executed only if Carp was
1267not available.
1268
19799a22 1269See L<perlfunc/die>, L<perlfunc/warn>, L<perlfunc/eval>, and
4438c4b7 1270L<warnings> for additional information.
68dc0745 1271
a0d0e21e 1272=back
55602bd2 1273
1274=head2 Error Indicators
1275
19799a22 1276The variables C<$@>, C<$!>, C<$^E>, and C<$?> contain information
1277about different types of error conditions that may appear during
1278execution of a Perl program. The variables are shown ordered by
1279the "distance" between the subsystem which reported the error and
1280the Perl process. They correspond to errors detected by the Perl
1281interpreter, C library, operating system, or an external program,
1282respectively.
55602bd2 1283
1284To illustrate the differences between these variables, consider the
19799a22 1285following Perl expression, which uses a single-quoted string:
55602bd2 1286
19799a22 1287 eval q{
22d0716c 1288 open my $pipe, "/cdrom/install |" or die $!;
1289 my @res = <$pipe>;
1290 close $pipe or die "bad pipe: $?, $!";
19799a22 1291 };
55602bd2 1292
1293After execution of this statement all 4 variables may have been set.
1294
19799a22 1295C<$@> is set if the string to be C<eval>-ed did not compile (this
1296may happen if C<open> or C<close> were imported with bad prototypes),
1297or if Perl code executed during evaluation die()d . In these cases
1298the value of $@ is the compile error, or the argument to C<die>
1299(which will interpolate C<$!> and C<$?>!). (See also L<Fatal>,
1300though.)
1301
c47ff5f1 1302When the eval() expression above is executed, open(), C<< <PIPE> >>,
19799a22 1303and C<close> are translated to calls in the C run-time library and
1304thence to the operating system kernel. C<$!> is set to the C library's
1305C<errno> if one of these calls fails.
1306
1307Under a few operating systems, C<$^E> may contain a more verbose
1308error indicator, such as in this case, "CDROM tray not closed."
14218588 1309Systems that do not support extended error messages leave C<$^E>
19799a22 1310the same as C<$!>.
1311
1312Finally, C<$?> may be set to non-0 value if the external program
1313F</cdrom/install> fails. The upper eight bits reflect specific
1314error conditions encountered by the program (the program's exit()
1315value). The lower eight bits reflect mode of failure, like signal
1316death and core dump information See wait(2) for details. In
1317contrast to C<$!> and C<$^E>, which are set only if error condition
1318is detected, the variable C<$?> is set on each C<wait> or pipe
1319C<close>, overwriting the old value. This is more like C<$@>, which
1320on every eval() is always set on failure and cleared on success.
2b92dfce 1321
19799a22 1322For more details, see the individual descriptions at C<$@>, C<$!>, C<$^E>,
1323and C<$?>.
2b92dfce 1324
1325=head2 Technical Note on the Syntax of Variable Names
1326
19799a22 1327Variable names in Perl can have several formats. Usually, they
1328must begin with a letter or underscore, in which case they can be
1329arbitrarily long (up to an internal limit of 251 characters) and
1330may contain letters, digits, underscores, or the special sequence
1331C<::> or C<'>. In this case, the part before the last C<::> or
1332C<'> is taken to be a I<package qualifier>; see L<perlmod>.
2b92dfce 1333
1334Perl variable names may also be a sequence of digits or a single
1335punctuation or control character. These names are all reserved for
19799a22 1336special uses by Perl; for example, the all-digits names are used
1337to hold data captured by backreferences after a regular expression
1338match. Perl has a special syntax for the single-control-character
1339names: It understands C<^X> (caret C<X>) to mean the control-C<X>
1340character. For example, the notation C<$^W> (dollar-sign caret
1341C<W>) is the scalar variable whose name is the single character
1342control-C<W>. This is better than typing a literal control-C<W>
1343into your program.
2b92dfce 1344
87275199 1345Finally, new in Perl 5.6, Perl variable names may be alphanumeric
19799a22 1346strings that begin with control characters (or better yet, a caret).
1347These variables must be written in the form C<${^Foo}>; the braces
1348are not optional. C<${^Foo}> denotes the scalar variable whose
1349name is a control-C<F> followed by two C<o>'s. These variables are
1350reserved for future special uses by Perl, except for the ones that
1351begin with C<^_> (control-underscore or caret-underscore). No
1352control-character name that begins with C<^_> will acquire a special
1353meaning in any future version of Perl; such names may therefore be
1354used safely in programs. C<$^_> itself, however, I<is> reserved.
1355
1356Perl identifiers that begin with digits, control characters, or
2b92dfce 1357punctuation characters are exempt from the effects of the C<package>
1358declaration and are always forced to be in package C<main>. A few
1359other names are also exempt:
1360
1361 ENV STDIN
1362 INC STDOUT
1363 ARGV STDERR
1364 ARGVOUT
1365 SIG
1366
1367In particular, the new special C<${^_XYZ}> variables are always taken
19799a22 1368to be in package C<main>, regardless of any C<package> declarations
2b92dfce 1369presently in scope.
1370
19799a22 1371=head1 BUGS
1372
1373Due to an unfortunate accident of Perl's implementation, C<use
1374English> imposes a considerable performance penalty on all regular
1375expression matches in a program, regardless of whether they occur
1376in the scope of C<use English>. For that reason, saying C<use
1377English> in libraries is strongly discouraged. See the
1378Devel::SawAmpersand module documentation from CPAN
6cecdcac 1379(http://www.perl.com/CPAN/modules/by-module/Devel/)
19799a22 1380for more information.
2b92dfce 1381
19799a22 1382Having to even think about the C<$^S> variable in your exception
1383handlers is simply wrong. C<$SIG{__DIE__}> as currently implemented
1384invites grievous and difficult to track down errors. Avoid it
1385and use an C<END{}> or CORE::GLOBAL::die override instead.