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