~ubuntu-branches/ubuntu/intrepid/horae/intrepid

« back to all changes in this revision

Viewing changes to 0CPAN/Pod-Simple-3.03/t/test_old_perlvar.pod

  • Committer: Bazaar Package Importer
  • Author(s): Carlo Segre
  • Date: 2008-02-23 23:13:02 UTC
  • mfrom: (2.1.2 hardy)
  • Revision ID: james.westby@ubuntu.com-20080223231302-mnyyxs3icvrus4ke
Tags: 066-3
Apply patch to athena_parts/misc.pl for compatibility with 
perl-tk 804.28.

Show diffs side-by-side

added added

removed removed

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