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