This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fix two broken links in perldelta.
[perl5.git] / pod / perlvar.pod
CommitLineData
a0d0e21e
LW
1=head1 NAME
2
3perlvar - Perl predefined variables
4
5=head1 DESCRIPTION
6
b0c22438 7=head2 The Syntax of Variable Names
8
241a59d9 9Variable names in Perl can have several formats. Usually, they
b0c22438 10must begin with a letter or underscore, in which case they can be
11arbitrarily long (up to an internal limit of 251 characters) and
12may contain letters, digits, underscores, or the special sequence
241a59d9 13C<::> or C<'>. In this case, the part before the last C<::> or
b0c22438 14C<'> is taken to be a I<package qualifier>; see L<perlmod>.
ce4793f1
KW
15A Unicode letter that is not ASCII is not considered to be a letter
16unless S<C<"use utf8">> is in effect, and somewhat more complicated
17rules apply; see L<perldata/Identifier parsing> for details.
b0c22438 18
ce4793f1
KW
19Perl variable names may also be a sequence of digits, a single
20punctuation character, or the two-character sequence: C<^> (caret or
21CIRCUMFLEX ACCENT) followed by any one of the characters C<[][A-Z^_?\]>.
22These names are all reserved for
b0c22438 23special uses by Perl; for example, the all-digits names are used
24to hold data captured by backreferences after a regular expression
ce4793f1 25match.
b0c22438 26
ce4793f1
KW
27Since Perl v5.6.0, Perl variable names may also be alphanumeric strings
28preceded by a caret. These must all be written in the form C<${^Foo}>;
29the braces are not optional. C<${^Foo}> denotes the scalar variable
30whose name is considered to be a control-C<F> followed by two C<o>'s.
31These variables are
b0c22438 32reserved for future special uses by Perl, except for the ones that
ce4793f1
KW
33begin with C<^_> (caret-underscore). No
34name that begins with C<^_> will acquire a special
b0c22438 35meaning in any future version of Perl; such names may therefore be
241a59d9 36used safely in programs. C<$^_> itself, however, I<is> reserved.
b0c22438 37
ce4793f1 38Perl identifiers that begin with digits or
b0c22438 39punctuation characters are exempt from the effects of the C<package>
40declaration and are always forced to be in package C<main>; they are
241a59d9 41also exempt from C<strict 'vars'> errors. A few other names are also
b0c22438 42exempt in these ways:
43
9548c15c
FC
44 ENV STDIN
45 INC STDOUT
46 ARGV STDERR
47 ARGVOUT
48 SIG
b0c22438 49
69520822 50In particular, the special C<${^_XYZ}> variables are always taken
b0c22438 51to be in package C<main>, regardless of any C<package> declarations
52presently in scope.
53
54=head1 SPECIAL VARIABLES
a0d0e21e 55
241a59d9 56The following names have special meaning to Perl. Most punctuation
0b9346e6 57names have reasonable mnemonics, or analogs in the shells.
58Nevertheless, if you wish to use long variable names, you need only say:
a0d0e21e 59
9548c15c 60 use English;
a0d0e21e 61
241a59d9
FC
62at the top of your program. This aliases all the short names to the long
63names in the current package. Some even have medium names, generally
1e7d0944 64borrowed from B<awk>. For more info, please see L<English>.
a1ce9542 65
241a59d9 66Before you continue, note the sort order for variables. In general, we
0b9346e6 67first list the variables in case-insensitive, almost-lexigraphical
68order (ignoring the C<{> or C<^> preceding words, as in C<${^UNICODE}>
69or C<$^T>), although C<$_> and C<@_> move up to the top of the pile.
70For variables with the same identifier, we list it in order of scalar,
71array, hash, and bareword.
a1ce9542 72
b0c22438 73=head2 General Variables
a0d0e21e 74
84dabc03 75=over 8
76
a0d0e21e
LW
77=item $ARG
78
79=item $_
a054c801 80X<$_> X<$ARG>
a0d0e21e 81
241a59d9 82The default input and pattern-searching space. The following pairs are
a0d0e21e
LW
83equivalent:
84
9548c15c
FC
85 while (<>) {...} # equivalent only in while!
86 while (defined($_ = <>)) {...}
a0d0e21e 87
9548c15c
FC
88 /^Subject:/
89 $_ =~ /^Subject:/
a0d0e21e 90
9548c15c
FC
91 tr/a-z/A-Z/
92 $_ =~ tr/a-z/A-Z/
a0d0e21e 93
9548c15c
FC
94 chomp
95 chomp($_)
a0d0e21e 96
0b9346e6 97Here are the places where Perl will assume C<$_> even if you don't use it:
cb1a09d0
AD
98
99=over 3
100
101=item *
102
84dabc03 103The following functions use C<$_> as a default argument:
db1511c8 104
f61f53cc 105abs, alarm, chomp, chop, chr, chroot,
ae815a4d
FC
106cos, defined, eval, evalbytes, exp, fc, glob, hex, int, lc,
107lcfirst, length, log, lstat, mkdir, oct, ord, pos, print, printf,
b0169937 108quotemeta, readlink, readpipe, ref, require, reverse (in scalar context only),
ae815a4d
FC
109rmdir, say, sin, split (for its second
110argument), sqrt, stat, study, uc, ucfirst,
b0169937 111unlink, unpack.
cb1a09d0
AD
112
113=item *
114
db1511c8
GS
115All file tests (C<-f>, C<-d>) except for C<-t>, which defaults to STDIN.
116See L<perlfunc/-X>
117
cb1a09d0
AD
118=item *
119
b0169937
GS
120The pattern matching operations C<m//>, C<s///> and C<tr///> (aka C<y///>)
121when used without an C<=~> operator.
cb1a09d0 122
54310121 123=item *
cb1a09d0
AD
124
125The default iterator variable in a C<foreach> loop if no other
126variable is supplied.
127
54310121 128=item *
cb1a09d0 129
b0c22438 130The implicit iterator variable in the C<grep()> and C<map()> functions.
cb1a09d0 131
54310121 132=item *
cb1a09d0 133
b0c22438 134The implicit variable of C<given()>.
db1511c8
GS
135
136=item *
137
ae815a4d
FC
138The default place to put the next value or input record
139when a C<< <FH> >>, C<readline>, C<readdir> or C<each>
cb1a09d0 140operation's result is tested by itself as the sole criterion of a C<while>
241a59d9 141test. Outside a C<while> test, this will not happen.
cb1a09d0
AD
142
143=back
144
fc33dad2
FC
145C<$_> is by default a global variable. However, as
146of perl v5.10.0, you can use a lexical version of
241a59d9 147C<$_> by declaring it in a file or in a block with C<my>. Moreover,
fc33dad2
FC
148declaring C<our $_> restores the global C<$_> in the current scope. Though
149this seemed like a good idea at the time it was introduced, lexical C<$_>
150actually causes more problems than it solves. If you call a function that
151expects to be passed information via C<$_>, it may or may not work,
152depending on how the function is written, there not being any easy way to
153solve this. Just avoid lexical C<$_>, unless you are feeling particularly
dd73cf18
RS
154masochistic. For this reason lexical C<$_> is still experimental and will
155produce a warning unless warnings have been disabled. As with other
156experimental features, the behavior of lexical C<$_> is subject to change
157without notice, including change into a fatal error.
59f00321 158
b0c22438 159Mnemonic: underline is understood in certain operations.
a0d0e21e 160
0b9346e6 161=item @ARG
cde0cee5 162
0b9346e6 163=item @_
164X<@_> X<@ARG>
a0d0e21e 165
0b9346e6 166Within a subroutine the array C<@_> contains the parameters passed to
241a59d9 167that subroutine. Inside a subroutine, C<@_> is the default array for
256ca3d3 168the array operators C<pop> and C<shift>.
a0d0e21e 169
0b9346e6 170See L<perlsub>.
a0d0e21e 171
1311257d 172=item $LIST_SEPARATOR
173
174=item $"
175X<$"> X<$LIST_SEPARATOR>
176
69520822 177When an array or an array slice is interpolated into a double-quoted
178string or a similar context such as C</.../>, its elements are
241a59d9 179separated by this value. Default is a space. For example, this:
69520822 180
9548c15c 181 print "The array is: @array\n";
69520822 182
183is equivalent to this:
184
9548c15c 185 print "The array is: " . join($", @array) . "\n";
69520822 186
187Mnemonic: works in double-quoted context.
1311257d 188
b0c22438 189=item $PROCESS_ID
cde0cee5 190
b0c22438 191=item $PID
a0d0e21e 192
b0c22438 193=item $$
194X<$$> X<$PID> X<$PROCESS_ID>
a0d0e21e 195
241a59d9 196The process number of the Perl running this script. Though you I<can> set
4a904372 197this variable, doing so is generally discouraged, although it can be
241a59d9 198invaluable for some testing purposes. It will be reset automatically
b0c22438 199across C<fork()> calls.
a0d0e21e 200
d7c042c9
AB
201Note for Linux and Debian GNU/kFreeBSD users: Before Perl v5.16.0 perl
202would emulate POSIX semantics on Linux systems using LinuxThreads, a
203partial implementation of POSIX Threads that has since been superseded
204by the Native POSIX Thread Library (NPTL).
205
e3f68f70 206LinuxThreads is now obsolete on Linux, and caching C<getpid()>
d7c042c9
AB
207like this made embedding perl unnecessarily complex (since you'd have
208to manually update the value of $$), so now C<$$> and C<getppid()>
209will always return the same values as the underlying C library.
210
211Debian GNU/kFreeBSD systems also used LinuxThreads up until and
212including the 6.0 release, but after that moved to FreeBSD thread
213semantics, which are POSIX-like.
214
215To see if your system is affected by this discrepancy check if
216C<getconf GNU_LIBPTHREAD_VERSION | grep -q NPTL> returns a false
1e7d0944 217value. NTPL threads preserve the POSIX semantics.
a0d0e21e 218
b0c22438 219Mnemonic: same as shells.
ad83b128 220
66d7055b
DR
221=item $PROGRAM_NAME
222
223=item $0
224X<$0> X<$PROGRAM_NAME>
225
226Contains the name of the program being executed.
227
228On some (but not all) operating systems assigning to C<$0> modifies
241a59d9 229the argument area that the C<ps> program sees. On some platforms you
66d7055b 230may have to use special C<ps> options or a different C<ps> to see the
241a59d9 231changes. Modifying the C<$0> is more useful as a way of indicating the
66d7055b
DR
232current program state than it is for hiding the program you're
233running.
234
235Note that there are platform-specific limitations on the maximum
241a59d9 236length of C<$0>. In the most extreme case it may be limited to the
66d7055b
DR
237space occupied by the original C<$0>.
238
239In some platforms there may be arbitrary amount of padding, for
240example space characters, after the modified name as shown by C<ps>.
241In some platforms this padding may extend all the way to the original
242length of the argument area, no matter what you do (this is the case
243for example with Linux 2.2).
244
245Note for BSD users: setting C<$0> does not completely remove "perl"
241a59d9 246from the ps(1) output. For example, setting C<$0> to C<"foobar"> may
66d7055b
DR
247result in C<"perl: foobar (perl)"> (whether both the C<"perl: "> prefix
248and the " (perl)" suffix are shown depends on your exact BSD variant
241a59d9 249and version). This is an operating system feature, Perl cannot help it.
66d7055b
DR
250
251In multithreaded scripts Perl coordinates the threads so that any
252thread may modify its copy of the C<$0> and the change becomes visible
241a59d9 253to ps(1) (assuming the operating system plays along). Note that
66d7055b
DR
254the view of C<$0> the other threads have will not change since they
255have their own copies of it.
256
257If the program has been given to perl via the switches C<-e> or C<-E>,
258C<$0> will contain the string C<"-e">.
259
60cf4914 260On Linux as of perl v5.14.0 the legacy process name will be set with
66d7055b 261C<prctl(2)>, in addition to altering the POSIX name via C<argv[0]> as
241a59d9 262perl has done since version 4.000. Now system utilities that read the
66d7055b 263legacy process name such as ps, top and killall will recognize the
241a59d9 264name you set when assigning to C<$0>. The string you supply will be
66d7055b
DR
265cut off at 16 bytes, this is a limitation imposed by Linux.
266
267Mnemonic: same as B<sh> and B<ksh>.
268
b0c22438 269=item $REAL_GROUP_ID
a01268b5 270
b0c22438 271=item $GID
a01268b5 272
b0c22438 273=item $(
274X<$(> X<$GID> X<$REAL_GROUP_ID>
a01268b5 275
241a59d9 276The real gid of this process. If you are on a machine that supports
b0c22438 277membership in multiple groups simultaneously, gives a space separated
241a59d9 278list of groups you are in. The first number is the one returned by
b0c22438 279C<getgid()>, and the subsequent ones by C<getgroups()>, one of which may be
280the same as the first number.
a01268b5 281
b0c22438 282However, a value assigned to C<$(> must be a single number used to
241a59d9
FC
283set the real gid. So the value given by C<$(> should I<not> be assigned
284back to C<$(> without being forced numeric, such as by adding zero. Note
b0c22438 285that this is different to the effective gid (C<$)>) which does take a
286list.
fe307981 287
b0c22438 288You can change both the real gid and the effective gid at the same
241a59d9
FC
289time by using C<POSIX::setgid()>. Changes
290to C<$(> require a check to C<$!>
b0c22438 291to detect any possible errors after an attempted change.
6cef1e77 292
241a59d9 293Mnemonic: parentheses are used to I<group> things. The real gid is the
b0c22438 294group you I<left>, if you're running setgid.
6cef1e77 295
b0c22438 296=item $EFFECTIVE_GROUP_ID
8e08999f 297
b0c22438 298=item $EGID
81714fb9 299
b0c22438 300=item $)
301X<$)> X<$EGID> X<$EFFECTIVE_GROUP_ID>
81714fb9 302
241a59d9 303The effective gid of this process. If you are on a machine that
b0c22438 304supports membership in multiple groups simultaneously, gives a space
241a59d9 305separated list of groups you are in. The first number is the one
b0c22438 306returned by C<getegid()>, and the subsequent ones by C<getgroups()>,
307one of which may be the same as the first number.
81714fb9 308
b0c22438 309Similarly, a value assigned to C<$)> must also be a space-separated
241a59d9
FC
310list of numbers. The first number sets the effective gid, and
311the rest (if any) are passed to C<setgroups()>. To get the effect of an
b0c22438 312empty list for C<setgroups()>, just repeat the new effective gid; that is,
313to force an effective gid of 5 and an effectively empty C<setgroups()>
314list, say C< $) = "5 5" >.
81714fb9 315
b0c22438 316You can change both the effective gid and the real gid at the same
317time by using C<POSIX::setgid()> (use only a single numeric argument).
318Changes to C<$)> require a check to C<$!> to detect any possible errors
319after an attempted change.
44a2ac75 320
b0c22438 321C<< $< >>, C<< $> >>, C<$(> and C<$)> can be set only on
241a59d9 322machines that support the corresponding I<set[re][ug]id()> routine. C<$(>
b0c22438 323and C<$)> can be swapped only on machines supporting C<setregid()>.
3195cf34 324
241a59d9 325Mnemonic: parentheses are used to I<group> things. The effective gid
b0c22438 326is the group that's I<right> for you, if you're running setgid.
44a2ac75 327
c82f2f4e
DR
328=item $REAL_USER_ID
329
330=item $UID
331
332=item $<
333X<< $< >> X<$UID> X<$REAL_USER_ID>
334
241a59d9
FC
335The real uid of this process. You can change both the real uid and the
336effective uid at the same time by using C<POSIX::setuid()>. Since
c82f2f4e
DR
337changes to C<< $< >> require a system call, check C<$!> after a change
338attempt to detect any possible errors.
339
340Mnemonic: it's the uid you came I<from>, if you're running setuid.
341
342=item $EFFECTIVE_USER_ID
343
344=item $EUID
345
346=item $>
347X<< $> >> X<$EUID> X<$EFFECTIVE_USER_ID>
348
241a59d9 349The effective uid of this process. For example:
c82f2f4e 350
9548c15c
FC
351 $< = $>; # set real to effective uid
352 ($<,$>) = ($>,$<); # swap real and effective uids
c82f2f4e
DR
353
354You can change both the effective uid and the real uid at the same
241a59d9 355time by using C<POSIX::setuid()>. Changes to C<< $> >> require a check
c82f2f4e
DR
356to C<$!> to detect any possible errors after an attempted change.
357
358C<< $< >> and C<< $> >> can be swapped only on machines
359supporting C<setreuid()>.
360
361Mnemonic: it's the uid you went I<to>, if you're running setuid.
362
0b9346e6 363=item $SUBSCRIPT_SEPARATOR
364
365=item $SUBSEP
366
367=item $;
368X<$;> X<$SUBSEP> X<SUBSCRIPT_SEPARATOR>
369
241a59d9 370The subscript separator for multidimensional array emulation. If you
0b9346e6 371refer to a hash element as
372
592708b4 373 $foo{$x,$y,$z}
0b9346e6 374
375it really means
376
592708b4 377 $foo{join($;, $x, $y, $z)}
0b9346e6 378
379But don't put
380
592708b4 381 @foo{$x,$y,$z} # a slice--note the @
0b9346e6 382
383which means
384
592708b4 385 ($foo{$x},$foo{$y},$foo{$z})
0b9346e6 386
241a59d9 387Default is "\034", the same as SUBSEP in B<awk>. If your keys contain
0b9346e6 388binary data there might not be any safe value for C<$;>.
389
390Consider using "real" multidimensional arrays as described
391in L<perllol>.
392
393Mnemonic: comma (the syntactic subscript separator) is a semi-semicolon.
394
0b9346e6 395=item $a
396
397=item $b
398X<$a> X<$b>
399
400Special package variables when using C<sort()>, see L<perlfunc/sort>.
401Because of this specialness C<$a> and C<$b> don't need to be declared
402(using C<use vars>, or C<our()>) even when using the C<strict 'vars'>
241a59d9 403pragma. Don't lexicalize them with C<my $a> or C<my $b> if you want to
0b9346e6 404be able to use them in the C<sort()> comparison block or function.
405
0b9346e6 406=item %ENV
407X<%ENV>
408
241a59d9 409The hash C<%ENV> contains your current environment. Setting a
0b9346e6 410value in C<ENV> changes the environment for any child processes
411you subsequently C<fork()> off.
412
32e006ac 413As of v5.18.0, both keys and values stored in C<%ENV> are stringified.
a5effbbc
KF
414
415 my $foo = 1;
416 $ENV{'bar'} = \$foo;
417 if( ref $ENV{'bar'} ) {
32e006ac 418 say "Pre 5.18.0 Behaviour";
a5effbbc 419 } else {
32e006ac 420 say "Post 5.18.0 Behaviour";
a5effbbc
KF
421 }
422
423Previously, only child processes received stringified values:
424
425 my $foo = 1;
426 $ENV{'bar'} = \$foo;
427
428 # Always printed 'non ref'
6d3f582d
FC
429 system($^X, '-e',
430 q/print ( ref $ENV{'bar'} ? 'ref' : 'non ref' ) /);
a5effbbc
KF
431
432This happens because you can't really share arbitrary data structures with
433foreign processes.
434
d2578154
KE
435=item $OLD_PERL_VERSION
436
4ad0ecd4 437=item $]
b77ebf74 438X<$]> X<$OLD_PERL_VERSION>
4ad0ecd4
KE
439
440The revision, version, and subversion of the Perl interpreter, represented
441as a decimal of the form 5.XXXYYY, where XXX is the version / 1e3 and YYY
442is the subversion / 1e6. For example, Perl v5.10.1 would be "5.010001".
443
444This variable can be used to determine whether the Perl interpreter
445executing a script is in the right range of versions:
446
447 warn "No PerlIO!\n" if $] lt '5.008';
448
449When comparing C<$]>, string comparison operators are B<highly
450recommended>. The inherent limitations of binary floating point
451representation can sometimes lead to incorrect comparisons for some
452numbers on some architectures.
453
454See also the documentation of C<use VERSION> and C<require VERSION>
455for a convenient way to fail if the running Perl interpreter is too old.
456
457See L</$^V> for a representation of the Perl version as a L<version>
458object, which allows more flexible string comparisons.
459
460The main advantage of C<$]> over C<$^V> is that it works the same on any
461version of Perl. The disadvantages are that it can't easily be compared
462to versions in other formats (e.g. literal v-strings, "v1.2.3" or
463version objects) and numeric comparisons can occasionally fail; it's good
464for string literal version checks and bad for comparing to a variable
465that hasn't been sanity-checked.
466
9fcc2314
AP
467The C<$OLD_PERL_VERSION> form was added in Perl v5.20.0 for historical
468reasons but its use is discouraged. (If your reason to use C<$]> is to
469run code on old perls then referring to it as C<$OLD_PERL_VERSION> would
470be self-defeating.)
4ad0ecd4 471
9fcc2314 472Mnemonic: Is this version of perl in the right bracket?
83c1fffe 473
b0c22438 474=item $SYSTEM_FD_MAX
5b2b9c68 475
b0c22438 476=item $^F
477X<$^F> X<$SYSTEM_FD_MAX>
5b2b9c68 478
241a59d9 479The maximum system file descriptor, ordinarily 2. System file
b0c22438 480descriptors are passed to C<exec()>ed processes, while higher file
241a59d9
FC
481descriptors are not. Also, during an
482C<open()>, system file descriptors are
b0c22438 483preserved even if the C<open()> fails (ordinary file descriptors are
241a59d9 484closed before the C<open()> is attempted). The close-on-exec
b0c22438 485status of a file descriptor will be decided according to the value of
486C<$^F> when the corresponding file, pipe, or socket was opened, not the
487time of the C<exec()>.
5b2b9c68 488
0b9346e6 489=item @F
490X<@F>
491
492The array C<@F> contains the fields of each line read in when autosplit
241a59d9 493mode is turned on. See L<perlrun> for the B<-a> switch. This array
0b9346e6 494is package-specific, and must be declared or given a full package name
495if not in package main when running under C<strict 'vars'>.
496
0b9346e6 497=item @INC
498X<@INC>
499
500The array C<@INC> contains the list of places that the C<do EXPR>,
241a59d9 501C<require>, or C<use> constructs look for their library files. It
0b9346e6 502initially consists of the arguments to any B<-I> command-line
503switches, followed by the default Perl library, probably
504F</usr/local/lib/perl>, followed by ".", to represent the current
241a59d9 505directory. ("." will not be appended if taint checks are enabled,
0b9346e6 506either by C<-T> or by C<-t>.) If you need to modify this at runtime,
507you should use the C<use lib> pragma to get the machine-dependent
508library properly loaded also:
509
9548c15c
FC
510 use lib '/mypath/libdir/';
511 use SomeMod;
0b9346e6 512
513You can also insert hooks into the file inclusion system by putting Perl
241a59d9
FC
514code directly into C<@INC>. Those hooks may be subroutine references,
515array references or blessed objects. See L<perlfunc/require> for details.
0b9346e6 516
517=item %INC
518X<%INC>
519
520The hash C<%INC> contains entries for each filename included via the
241a59d9 521C<do>, C<require>, or C<use> operators. The key is the filename
0b9346e6 522you specified (with module names converted to pathnames), and the
241a59d9 523value is the location of the file found. The C<require>
0b9346e6 524operator uses this hash to determine whether a particular file has
525already been included.
526
527If the file was loaded via a hook (e.g. a subroutine reference, see
528L<perlfunc/require> for a description of these hooks), this hook is
241a59d9 529by default inserted into C<%INC> in place of a filename. Note, however,
0b9346e6 530that the hook may have set the C<%INC> entry by itself to provide some more
531specific info.
532
b0c22438 533=item $INPLACE_EDIT
a0d0e21e 534
b0c22438 535=item $^I
536X<$^I> X<$INPLACE_EDIT>
a0d0e21e 537
241a59d9 538The current value of the inplace-edit extension. Use C<undef> to disable
b0c22438 539inplace editing.
a0d0e21e 540
b0c22438 541Mnemonic: value of B<-i> switch.
a0d0e21e 542
bf38d944
H
543=item @ISA
544X<@ISA>
545
546Each package contains a special array called C<@ISA> which contains a list
547of that class's parent classes, if any. This array is simply a list of
548scalars, each of which is a string that corresponds to a package name. The
549array is examined when Perl does method resolution, which is covered in
550L<perlobj>.
551
5312fe6c
AP
552To load packages while adding them to C<@ISA>, see the L<parent> pragma. The
553discouraged L<base> pragma does this as well, but should not be used except
554when compatibility with the discouraged L<fields> pragma is required.
bf38d944 555
b0c22438 556=item $^M
557X<$^M>
a0d0e21e 558
b0c22438 559By default, running out of memory is an untrappable, fatal error.
560However, if suitably built, Perl can use the contents of C<$^M>
241a59d9 561as an emergency memory pool after C<die()>ing. Suppose that your Perl
b0c22438 562were compiled with C<-DPERL_EMERGENCY_SBRK> and used Perl's malloc.
563Then
a0d0e21e 564
9548c15c 565 $^M = 'a' x (1 << 16);
a0d0e21e 566
241a59d9 567would allocate a 64K buffer for use in an emergency. See the
b0c22438 568F<INSTALL> file in the Perl distribution for information on how to
241a59d9 569add custom C compilation flags when compiling perl. To discourage casual
b0c22438 570use of this advanced feature, there is no L<English|English> long name for
571this variable.
a0d0e21e 572
b0c22438 573This variable was added in Perl 5.004.
a0d0e21e 574
b0c22438 575=item $OSNAME
a0d0e21e 576
b0c22438 577=item $^O
578X<$^O> X<$OSNAME>
a0d0e21e 579
b0c22438 580The name of the operating system under which this copy of Perl was
241a59d9 581built, as determined during the configuration process. For examples
b0c22438 582see L<perlport/PLATFORMS>.
a0d0e21e 583
241a59d9 584The value is identical to C<$Config{'osname'}>. See also L<Config>
b0c22438 585and the B<-V> command-line switch documented in L<perlrun>.
a0d0e21e 586
b0c22438 587In Windows platforms, C<$^O> is not very helpful: since it is always
588C<MSWin32>, it doesn't tell the difference between
241a59d9 58995/98/ME/NT/2000/XP/CE/.NET. Use C<Win32::GetOSName()> or
b0c22438 590Win32::GetOSVersion() (see L<Win32> and L<perlport>) to distinguish
591between the variants.
a0d0e21e 592
b0c22438 593This variable was added in Perl 5.003.
a0d0e21e 594
1fa81471
DR
595=item %SIG
596X<%SIG>
a0d0e21e 597
241a59d9 598The hash C<%SIG> contains signal handlers for signals. For example:
a0d0e21e 599
9548c15c
FC
600 sub handler { # 1st argument is signal name
601 my($sig) = @_;
602 print "Caught a SIG$sig--shutting down\n";
603 close(LOG);
604 exit(0);
605 }
a0d0e21e 606
9548c15c
FC
607 $SIG{'INT'} = \&handler;
608 $SIG{'QUIT'} = \&handler;
609 ...
610 $SIG{'INT'} = 'DEFAULT'; # restore default action
611 $SIG{'QUIT'} = 'IGNORE'; # ignore SIGQUIT
a0d0e21e 612
1fa81471 613Using a value of C<'IGNORE'> usually has the effect of ignoring the
241a59d9 614signal, except for the C<CHLD> signal. See L<perlipc> for more about
1fa81471 615this special case.
a0d0e21e 616
1fa81471 617Here are some other examples:
a0d0e21e 618
9548c15c
FC
619 $SIG{"PIPE"} = "Plumber"; # assumes main::Plumber (not
620 # recommended)
621 $SIG{"PIPE"} = \&Plumber; # just fine; assume current
622 # Plumber
623 $SIG{"PIPE"} = *Plumber; # somewhat esoteric
624 $SIG{"PIPE"} = Plumber(); # oops, what did Plumber()
625 # return??
a0d0e21e 626
1fa81471
DR
627Be sure not to use a bareword as the name of a signal handler,
628lest you inadvertently call it.
a0d0e21e 629
1fa81471 630If your system has the C<sigaction()> function then signal handlers
241a59d9 631are installed using it. This means you get reliable signal handling.
a0d0e21e 632
60cf4914 633The default delivery policy of signals changed in Perl v5.8.0 from
1fa81471 634immediate (also known as "unsafe") to deferred, also known as "safe
241a59d9 635signals". See L<perlipc> for more information.
a0d0e21e 636
241a59d9 637Certain internal hooks can be also set using the C<%SIG> hash. The
1fa81471 638routine indicated by C<$SIG{__WARN__}> is called when a warning
241a59d9
FC
639message is about to be printed. The warning message is passed as the
640first argument. The presence of a C<__WARN__> hook causes the
641ordinary printing of warnings to C<STDERR> to be suppressed. You can
1fa81471
DR
642use this to save warnings in a variable, or turn warnings into fatal
643errors, like this:
a0d0e21e 644
9548c15c
FC
645 local $SIG{__WARN__} = sub { die $_[0] };
646 eval $proggie;
a8f8344d 647
b0c22438 648As the C<'IGNORE'> hook is not supported by C<__WARN__>, you can
649disable warnings using the empty subroutine:
f86702cc 650
9548c15c 651 local $SIG{__WARN__} = sub {};
55602bd2 652
b0c22438 653The routine indicated by C<$SIG{__DIE__}> is called when a fatal
241a59d9
FC
654exception is about to be thrown. The error message is passed as the
655first argument. When a C<__DIE__> hook routine returns, the exception
b0c22438 656processing continues as it would have in the absence of the hook,
c94b42ea
DM
657unless the hook routine itself exits via a C<goto &sub>, a loop exit,
658or a C<die()>. The C<__DIE__> handler is explicitly disabled during
659the call, so that you can die from a C<__DIE__> handler. Similarly
660for C<__WARN__>.
e5218da5 661
b0c22438 662Due to an implementation glitch, the C<$SIG{__DIE__}> hook is called
241a59d9 663even inside an C<eval()>. Do not use this to rewrite a pending
b0c22438 664exception in C<$@>, or as a bizarre substitute for overriding
241a59d9 665C<CORE::GLOBAL::die()>. This strange action at a distance may be fixed
b0c22438 666in a future release so that C<$SIG{__DIE__}> is only called if your
241a59d9 667program is about to exit, as was the original intent. Any other use is
b0c22438 668deprecated.
669
670C<__DIE__>/C<__WARN__> handlers are very special in one respect: they
241a59d9 671may be called to report (probable) errors found by the parser. In such
b0c22438 672a case the parser may be in inconsistent state, so any attempt to
673evaluate Perl code from such a handler will probably result in a
241a59d9 674segfault. This means that warnings or errors that result from parsing
b0c22438 675Perl should be used with extreme caution, like this:
e5218da5 676
9548c15c
FC
677 require Carp if defined $^S;
678 Carp::confess("Something wrong") if defined &Carp::confess;
679 die "Something wrong, but could not load Carp to give "
680 . "backtrace...\n\t"
681 . "To see backtrace try starting Perl with -MCarp switch";
e5218da5 682
b0c22438 683Here the first line will load C<Carp> I<unless> it is the parser who
241a59d9
FC
684called the handler. The second line will print backtrace and die if
685C<Carp> was available. The third line will be executed only if C<Carp> was
b0c22438 686not available.
0a378802 687
0b9346e6 688Having to even think about the C<$^S> variable in your exception
241a59d9
FC
689handlers is simply wrong. C<$SIG{__DIE__}> as currently implemented
690invites grievous and difficult to track down errors. Avoid it
0b9346e6 691and use an C<END{}> or CORE::GLOBAL::die override instead.
692
b0c22438 693See L<perlfunc/die>, L<perlfunc/warn>, L<perlfunc/eval>, and
694L<warnings> for additional information.
0a378802 695
b0c22438 696=item $BASETIME
6ab308ee 697
b0c22438 698=item $^T
699X<$^T> X<$BASETIME>
6ab308ee 700
b0c22438 701The time at which the program began running, in seconds since the
241a59d9 702epoch (beginning of 1970). The values returned by the B<-M>, B<-A>,
b0c22438 703and B<-C> filetests are based on this value.
a0d0e21e 704
b0c22438 705=item $PERL_VERSION
a0d0e21e 706
b0c22438 707=item $^V
708X<$^V> X<$PERL_VERSION>
a0d0e21e 709
b0c22438 710The revision, version, and subversion of the Perl interpreter,
eb82332c 711represented as a L<version> object.
748a9306 712
60cf4914
BF
713This variable first appeared in perl v5.6.0; earlier versions of perl
714will see an undefined value. Before perl v5.10.0 C<$^V> was represented
f20d3573 715as a v-string rather than a L<version> object.
55602bd2 716
b0c22438 717C<$^V> can be used to determine whether the Perl interpreter executing
241a59d9 718a script is in the right range of versions. For example:
a0d0e21e 719
9548c15c 720 warn "Hashes not randomized!\n" if !$^V or $^V lt v5.8.1
a0d0e21e 721
f20d3573
DG
722While version objects overload stringification, to portably convert
723C<$^V> into its string representation, use C<sprintf()>'s C<"%vd">
724conversion, which works for both v-strings or version objects:
a0d0e21e 725
9548c15c 726 printf "version is v%vd\n", $^V; # Perl's version
a0d0e21e 727
b0c22438 728See the documentation of C<use VERSION> and C<require VERSION>
729for a convenient way to fail if the running Perl interpreter is too old.
4d76a344 730
6a29646e 731See also C<L</$]>> for a decimal representation of the Perl version.
a0d0e21e 732
f20d3573
DG
733The main advantage of C<$^V> over C<$]> is that, for Perl v5.10.0 or
734later, it overloads operators, allowing easy comparison against other
735version representations (e.g. decimal, literal v-string, "v1.2.3", or
736objects). The disadvantage is that prior to v5.10.0, it was only a
6a29646e
KW
737literal v-string, which can't be easily printed or compared, whereas
738the behavior of C<$]> is unchanged on all versions of Perl.
a0d0e21e 739
eb82332c 740Mnemonic: use ^V for a version object.
a0d0e21e 741
b0c22438 742=item ${^WIN32_SLOPPY_STAT}
5b442a2a 743X<${^WIN32_SLOPPY_STAT}> X<sitecustomize> X<sitecustomize.pl>
a0d0e21e 744
b0c22438 745If this variable is set to a true value, then C<stat()> on Windows will
241a59d9 746not try to open the file. This means that the link count cannot be
b0c22438 747determined and file attributes may be out of date if additional
241a59d9 748hardlinks to the file exist. On the other hand, not opening the file
b0c22438 749is considerably faster, especially for files on network drives.
a0d0e21e 750
b0c22438 751This variable could be set in the F<sitecustomize.pl> file to
752configure the local Perl installation to use "sloppy" C<stat()> by
241a59d9 753default. See the documentation for B<-f> in
b0c22438 754L<perlrun|perlrun/"Command Switches"> for more information about site
755customization.
a0d0e21e 756
60cf4914 757This variable was added in Perl v5.10.0.
a0d0e21e 758
b0c22438 759=item $EXECUTABLE_NAME
a0d0e21e 760
b0c22438 761=item $^X
762X<$^X> X<$EXECUTABLE_NAME>
a0d0e21e 763
b0c22438 764The name used to execute the current copy of Perl, from C's
765C<argv[0]> or (where supported) F</proc/self/exe>.
a043a685 766
b0c22438 767Depending on the host operating system, the value of C<$^X> may be
768a relative or absolute pathname of the perl program file, or may
769be the string used to invoke perl but not the pathname of the
241a59d9 770perl program file. Also, most operating systems permit invoking
b0c22438 771programs that are not in the PATH environment variable, so there
241a59d9 772is no guarantee that the value of C<$^X> is in PATH. For VMS, the
b0c22438 773value may or may not include a version number.
a0d0e21e 774
b0c22438 775You usually can use the value of C<$^X> to re-invoke an independent
776copy of the same perl that is currently running, e.g.,
a0d0e21e 777
9548c15c 778 @first_run = `$^X -le "print int rand 100 for 1..100"`;
a0d0e21e 779
b0c22438 780But recall that not all operating systems support forking or
781capturing of the output of commands, so this complex statement
782may not be portable.
a0d0e21e 783
b0c22438 784It is not safe to use the value of C<$^X> as a path name of a file,
785as some operating systems that have a mandatory suffix on
786executable files do not require use of the suffix when invoking
241a59d9 787a command. To convert the value of C<$^X> to a path name, use the
b0c22438 788following statements:
8cc95fdb 789
9548c15c
FC
790 # Build up a set of file names (not command names).
791 use Config;
792 my $this_perl = $^X;
793 if ($^O ne 'VMS') {
794 $this_perl .= $Config{_exe}
795 unless $this_perl =~ m/$Config{_exe}$/i;
796 }
8cc95fdb 797
b0c22438 798Because many operating systems permit anyone with read access to
799the Perl program file to make a copy of it, patch the copy, and
800then execute the copy, the security-conscious Perl programmer
801should take care to invoke the installed copy of perl, not the
241a59d9 802copy referenced by C<$^X>. The following statements accomplish
b0c22438 803this goal, and produce a pathname that can be invoked as a
804command or referenced as a file.
a043a685 805
9548c15c
FC
806 use Config;
807 my $secure_perl_path = $Config{perlpath};
808 if ($^O ne 'VMS') {
809 $secure_perl_path .= $Config{_exe}
810 unless $secure_perl_path =~ m/$Config{_exe}$/i;
811 }
a0d0e21e 812
b0c22438 813=back
a0d0e21e 814
b0c22438 815=head2 Variables related to regular expressions
816
817Most of the special variables related to regular expressions are side
241a59d9
FC
818effects. Perl sets these variables when it has a successful match, so
819you should check the match result before using them. For instance:
b0c22438 820
9548c15c
FC
821 if( /P(A)TT(ER)N/ ) {
822 print "I found $1 and $2\n";
823 }
b0c22438 824
0b9346e6 825These variables are read-only and dynamically-scoped, unless we note
b0c22438 826otherwise.
827
0b9346e6 828The dynamic nature of the regular expression variables means that
829their value is limited to the block that they are in, as demonstrated
830by this bit of code:
b0c22438 831
9548c15c
FC
832 my $outer = 'Wallace and Grommit';
833 my $inner = 'Mutt and Jeff';
0b9346e6 834
9548c15c 835 my $pattern = qr/(\S+) and (\S+)/;
0b9346e6 836
9548c15c 837 sub show_n { print "\$1 is $1; \$2 is $2\n" }
0b9346e6 838
9548c15c
FC
839 {
840 OUTER:
841 show_n() if $outer =~ m/$pattern/;
0b9346e6 842
9548c15c
FC
843 INNER: {
844 show_n() if $inner =~ m/$pattern/;
845 }
0b9346e6 846
9548c15c
FC
847 show_n();
848 }
b0c22438 849
0b9346e6 850The output shows that while in the C<OUTER> block, the values of C<$1>
241a59d9 851and C<$2> are from the match against C<$outer>. Inside the C<INNER>
0b9346e6 852block, the values of C<$1> and C<$2> are from the match against
853C<$inner>, but only until the end of the block (i.e. the dynamic
241a59d9 854scope). After the C<INNER> block completes, the values of C<$1> and
0b9346e6 855C<$2> return to the values for the match against C<$outer> even though
b0c22438 856we have not made another match:
857
9548c15c
FC
858 $1 is Wallace; $2 is Grommit
859 $1 is Mutt; $2 is Jeff
860 $1 is Wallace; $2 is Grommit
a0d0e21e 861
40445027 862=head3 Performance issues
0b9346e6 863
40445027
DM
864Traditionally in Perl, any use of any of the three variables C<$`>, C<$&>
865or C<$'> (or their C<use English> equivalents) anywhere in the code, caused
866all subsequent successful pattern matches to make a copy of the matched
867string, in case the code might subsequently access one of those variables.
868This imposed a considerable performance penalty across the whole program,
869so generally the use of these variables has been discouraged.
0b9346e6 870
40445027
DM
871In Perl 5.6.0 the C<@-> and C<@+> dynamic arrays were introduced that
872supply the indices of successful matches. So you could for example do
873this:
874
875 $str =~ /pattern/;
876
877 print $`, $&, $'; # bad: perfomance hit
878
879 print # good: no perfomance hit
880 substr($str, 0, $-[0]),
881 substr($str, $-[0], $+[0]-$-[0]),
882 substr($str, $+[0]);
883
884In Perl 5.10.0 the C</p> match operator flag and the C<${^PREMATCH}>,
885C<${^MATCH}>, and C<${^POSTMATCH}> variables were introduced, that allowed
886you to suffer the penalties only on patterns marked with C</p>.
887
888In Perl 5.18.0 onwards, perl started noting the presence of each of the
889three variables separately, and only copied that part of the string
890required; so in
891
892 $`; $&; "abcdefgh" =~ /d/
893
894perl would only copy the "abcd" part of the string. That could make a big
895difference in something like
896
897 $str = 'x' x 1_000_000;
898 $&; # whoops
899 $str =~ /x/g # one char copied a million times, not a million chars
900
901In Perl 5.20.0 a new copy-on-write system was enabled by default, which
902finally fixes all performance issues with these three variables, and makes
903them safe to use anywhere.
904
905The C<Devel::NYTProf> and C<Devel::FindAmpersand> modules can help you
906find uses of these problematic match variables in your code.
13b0f67d 907
b0c22438 908=over 8
a0d0e21e 909
b0c22438 910=item $<I<digits>> ($1, $2, ...)
27deb0cf 911X<$1> X<$2> X<$3> X<$I<digits>>
8cc95fdb 912
b0c22438 913Contains the subpattern from the corresponding set of capturing
914parentheses from the last successful pattern match, not counting patterns
915matched in nested blocks that have been exited already.
8cc95fdb 916
27deb0cf
YO
917Note there is a distinction between a capture buffer which matches
918the empty string a capture buffer which is optional. Eg, C<(x?)> and
919C<(x)?> The latter may be undef, the former not.
920
b0c22438 921These variables are read-only and dynamically-scoped.
a043a685 922
b0c22438 923Mnemonic: like \digits.
a0d0e21e 924
27deb0cf
YO
925=item @{^CAPTURE}
926X<@{^CAPTURE}> X<@^CAPTURE>
927
928An array which contains the capture buffers, if any, of the last
929successful pattern match, not counting patterns matched
930in nested blocks that have been exited already.
931
932Note that the 0 index of @{^CAPTURE} is equivalent to $1, the 1 index
933is equivalent to $2, etc.
934
935 if ("foal"=~/(.)(.)(.)(.)/) {
936 print join "-", @{^CAPTURE};
937 }
938
939should output "f-o-a-l".
940
941See also L</$I<digits>>, L</%{^CAPTURE}> and L</%{^CAPTURE_ALL}>.
942
943This variable was added in 5.25.7
944
b0c22438 945=item $MATCH
a0d0e21e 946
b0c22438 947=item $&
948X<$&> X<$MATCH>
a0d0e21e 949
b0c22438 950The string matched by the last successful pattern match (not counting
951any matches hidden within a BLOCK or C<eval()> enclosed by the current
952BLOCK).
a0d0e21e 953
40445027
DM
954See L</Performance issues> above for the serious performance implications
955of using this variable (even once) in your code.
80bca1b4 956
b0c22438 957This variable is read-only and dynamically-scoped.
f9cbb277 958
b0c22438 959Mnemonic: like C<&> in some editors.
0b9346e6 960
b0c22438 961=item ${^MATCH}
962X<${^MATCH}>
a0d0e21e 963
b0c22438 964This is similar to C<$&> (C<$MATCH>) except that it does not incur the
13b0f67d 965performance penalty associated with that variable.
40445027
DM
966
967See L</Performance issues> above.
968
13b0f67d 969In Perl v5.18 and earlier, it is only guaranteed
b0c22438 970to return a defined value when the pattern was compiled or executed with
13b0f67d
DM
971the C</p> modifier. In Perl v5.20, the C</p> modifier does nothing, so
972C<${^MATCH}> does the same thing as C<$MATCH>.
80bca1b4 973
60cf4914 974This variable was added in Perl v5.10.0.
4bc88a62 975
b0c22438 976This variable is read-only and dynamically-scoped.
e2975953 977
b0c22438 978=item $PREMATCH
52c447a8 979
b0c22438 980=item $`
5b442a2a 981X<$`> X<$PREMATCH> X<${^PREMATCH}>
7636ea95 982
b0c22438 983The string preceding whatever was matched by the last successful
984pattern match, not counting any matches hidden within a BLOCK or C<eval>
0b9346e6 985enclosed by the current BLOCK.
a0d0e21e 986
40445027
DM
987See L</Performance issues> above for the serious performance implications
988of using this variable (even once) in your code.
a0d0e21e 989
b0c22438 990This variable is read-only and dynamically-scoped.
a0d0e21e 991
b0c22438 992Mnemonic: C<`> often precedes a quoted string.
f83ed198 993
b0c22438 994=item ${^PREMATCH}
5b442a2a 995X<$`> X<${^PREMATCH}>
a0d0e21e 996
b0c22438 997This is similar to C<$`> ($PREMATCH) except that it does not incur the
13b0f67d 998performance penalty associated with that variable.
40445027
DM
999
1000See L</Performance issues> above.
1001
13b0f67d 1002In Perl v5.18 and earlier, it is only guaranteed
b0c22438 1003to return a defined value when the pattern was compiled or executed with
13b0f67d
DM
1004the C</p> modifier. In Perl v5.20, the C</p> modifier does nothing, so
1005C<${^PREMATCH}> does the same thing as C<$PREMATCH>.
a0d0e21e 1006
4a70680a 1007This variable was added in Perl v5.10.0.
a0d0e21e 1008
b0c22438 1009This variable is read-only and dynamically-scoped.
a0d0e21e 1010
b0c22438 1011=item $POSTMATCH
16070b82 1012
b0c22438 1013=item $'
5b442a2a 1014X<$'> X<$POSTMATCH> X<${^POSTMATCH}> X<@->
305aace0 1015
b0c22438 1016The string following whatever was matched by the last successful
1017pattern match (not counting any matches hidden within a BLOCK or C<eval()>
241a59d9 1018enclosed by the current BLOCK). Example:
305aace0 1019
9548c15c
FC
1020 local $_ = 'abcdefghi';
1021 /def/;
1022 print "$`:$&:$'\n"; # prints abc:def:ghi
305aace0 1023
40445027
DM
1024See L</Performance issues> above for the serious performance implications
1025of using this variable (even once) in your code.
a0d0e21e 1026
b0c22438 1027This variable is read-only and dynamically-scoped.
1028
1029Mnemonic: C<'> often follows a quoted string.
1030
1031=item ${^POSTMATCH}
5b442a2a 1032X<${^POSTMATCH}> X<$'> X<$POSTMATCH>
b0c22438 1033
1034This is similar to C<$'> (C<$POSTMATCH>) except that it does not incur the
13b0f67d 1035performance penalty associated with that variable.
40445027
DM
1036
1037See L</Performance issues> above.
1038
13b0f67d 1039In Perl v5.18 and earlier, it is only guaranteed
b0c22438 1040to return a defined value when the pattern was compiled or executed with
13b0f67d
DM
1041the C</p> modifier. In Perl v5.20, the C</p> modifier does nothing, so
1042C<${^POSTMATCH}> does the same thing as C<$POSTMATCH>.
b0c22438 1043
60cf4914 1044This variable was added in Perl v5.10.0.
b0c22438 1045
1046This variable is read-only and dynamically-scoped.
1047
1048=item $LAST_PAREN_MATCH
1049
1050=item $+
1051X<$+> X<$LAST_PAREN_MATCH>
1052
1053The text matched by the last bracket of the last successful search pattern.
1054This is useful if you don't know which one of a set of alternative patterns
241a59d9 1055matched. For example:
b0c22438 1056
9548c15c 1057 /Version: (.*)|Revision: (.*)/ && ($rev = $+);
b0c22438 1058
1059This variable is read-only and dynamically-scoped.
1060
1061Mnemonic: be positive and forward looking.
1062
1063=item $LAST_SUBMATCH_RESULT
1064
1065=item $^N
5b442a2a 1066X<$^N> X<$LAST_SUBMATCH_RESULT>
b0c22438 1067
1068The text matched by the used group most-recently closed (i.e. the group
1069with the rightmost closing parenthesis) of the last successful search
1070pattern.
1071
1072This is primarily used inside C<(?{...})> blocks for examining text
241a59d9 1073recently matched. For example, to effectively capture text to a variable
b0c22438 1074(in addition to C<$1>, C<$2>, etc.), replace C<(...)> with
1075
9548c15c 1076 (?:(...)(?{ $var = $^N }))
b0c22438 1077
1078By setting and then using C<$var> in this way relieves you from having to
1079worry about exactly which numbered set of parentheses they are.
1080
60cf4914 1081This variable was added in Perl v5.8.0.
b0c22438 1082
1083Mnemonic: the (possibly) Nested parenthesis that most recently closed.
1084
1085=item @LAST_MATCH_END
1086
1087=item @+
1088X<@+> X<@LAST_MATCH_END>
1089
1090This array holds the offsets of the ends of the last successful
241a59d9
FC
1091submatches in the currently active dynamic scope. C<$+[0]> is
1092the offset into the string of the end of the entire match. This
b0c22438 1093is the same value as what the C<pos> function returns when called
241a59d9 1094on the variable that was matched against. The I<n>th element
b0c22438 1095of this array holds the offset of the I<n>th submatch, so
1096C<$+[1]> is the offset past where C<$1> ends, C<$+[2]> the offset
241a59d9
FC
1097past where C<$2> ends, and so on. You can use C<$#+> to determine
1098how many subgroups were in the last successful match. See the
b0c22438 1099examples given for the C<@-> variable.
1100
60cf4914 1101This variable was added in Perl v5.6.0.
b0c22438 1102
27deb0cf
YO
1103=item %{^CAPTURE}
1104
b0c22438 1105=item %LAST_PAREN_MATCH
1106
1107=item %+
27deb0cf 1108X<%+> X<%LAST_PAREN_MATCH> X<%{^CAPTURE}>
b0c22438 1109
1110Similar to C<@+>, the C<%+> hash allows access to the named capture
1111buffers, should they exist, in the last successful match in the
1112currently active dynamic scope.
1113
1114For example, C<$+{foo}> is equivalent to C<$1> after the following match:
1115
9548c15c 1116 'foo' =~ /(?<foo>foo)/;
b0c22438 1117
1118The keys of the C<%+> hash list only the names of buffers that have
1119captured (and that are thus associated to defined values).
1120
1121The underlying behaviour of C<%+> is provided by the
1122L<Tie::Hash::NamedCapture> module.
1123
1124B<Note:> C<%-> and C<%+> are tied views into a common internal hash
241a59d9 1125associated with the last successful regular expression. Therefore mixing
b0c22438 1126iterative access to them via C<each> may have unpredictable results.
1127Likewise, if the last successful match changes, then the results may be
1128surprising.
1129
27deb0cf
YO
1130This variable was added in Perl v5.10.0. The C<%{^CAPTURE}> alias was
1131added in 5.25.7.
a0d0e21e 1132
b0c22438 1133This variable is read-only and dynamically-scoped.
1134
1135=item @LAST_MATCH_START
1136
1137=item @-
1138X<@-> X<@LAST_MATCH_START>
1139
1140C<$-[0]> is the offset of the start of the last successful match.
1141C<$-[>I<n>C<]> is the offset of the start of the substring matched by
1142I<n>-th subpattern, or undef if the subpattern did not match.
1143
1144Thus, after a match against C<$_>, C<$&> coincides with C<substr $_, $-[0],
241a59d9 1145$+[0] - $-[0]>. Similarly, $I<n> coincides with C<substr $_, $-[n],
b0c22438 1146$+[n] - $-[n]> if C<$-[n]> is defined, and $+ coincides with
241a59d9
FC
1147C<substr $_, $-[$#-], $+[$#-] - $-[$#-]>. One can use C<$#-> to find the
1148last matched subgroup in the last successful match. Contrast with
1149C<$#+>, the number of subgroups in the regular expression. Compare
b0c22438 1150with C<@+>.
1151
1152This array holds the offsets of the beginnings of the last
1153successful submatches in the currently active dynamic scope.
1154C<$-[0]> is the offset into the string of the beginning of the
241a59d9 1155entire match. The I<n>th element of this array holds the offset
b0c22438 1156of the I<n>th submatch, so C<$-[1]> is the offset where C<$1>
1157begins, C<$-[2]> the offset where C<$2> begins, and so on.
1158
1159After a match against some variable C<$var>:
1160
1161=over 5
1162
1163=item C<$`> is the same as C<substr($var, 0, $-[0])>
1164
1165=item C<$&> is the same as C<substr($var, $-[0], $+[0] - $-[0])>
1166
1167=item C<$'> is the same as C<substr($var, $+[0])>
1168
1169=item C<$1> is the same as C<substr($var, $-[1], $+[1] - $-[1])>
1170
1171=item C<$2> is the same as C<substr($var, $-[2], $+[2] - $-[2])>
1172
1173=item C<$3> is the same as C<substr($var, $-[3], $+[3] - $-[3])>
1174
1175=back
1176
60cf4914 1177This variable was added in Perl v5.6.0.
b0c22438 1178
27deb0cf
YO
1179=item %{^CAPTURE_ALL}
1180X<%{^CAPTURE_ALL}>
1181
b0c22438 1182=item %-
2e67aae7 1183X<%->
b0c22438 1184
1185Similar to C<%+>, this variable allows access to the named capture groups
241a59d9 1186in the last successful match in the currently active dynamic scope. To
b0c22438 1187each capture group name found in the regular expression, it associates a
1188reference to an array containing the list of values captured by all
1189buffers with that name (should there be several of them), in the order
1190where they appear.
1191
1192Here's an example:
1193
1194 if ('1234' =~ /(?<A>1)(?<B>2)(?<A>3)(?<B>4)/) {
1195 foreach my $bufname (sort keys %-) {
1196 my $ary = $-{$bufname};
1197 foreach my $idx (0..$#$ary) {
1198 print "\$-{$bufname}[$idx] : ",
9548c15c
FC
1199 (defined($ary->[$idx])
1200 ? "'$ary->[$idx]'"
1201 : "undef"),
b0c22438 1202 "\n";
1203 }
1204 }
1205 }
1206
1207would print out:
1208
9548c15c
FC
1209 $-{A}[0] : '1'
1210 $-{A}[1] : '3'
1211 $-{B}[0] : '2'
1212 $-{B}[1] : '4'
b0c22438 1213
1214The keys of the C<%-> hash correspond to all buffer names found in
1215the regular expression.
1216
1217The behaviour of C<%-> is implemented via the
1218L<Tie::Hash::NamedCapture> module.
1219
1220B<Note:> C<%-> and C<%+> are tied views into a common internal hash
241a59d9 1221associated with the last successful regular expression. Therefore mixing
b0c22438 1222iterative access to them via C<each> may have unpredictable results.
1223Likewise, if the last successful match changes, then the results may be
1224surprising.
1225
27deb0cf
YO
1226This variable was added in Perl v5.10.0. The C<%{^CAPTURE_ALL}> alias was
1227added in 5.25.7.
b0c22438 1228
1229This variable is read-only and dynamically-scoped.
1230
1231=item $LAST_REGEXP_CODE_RESULT
1232
1233=item $^R
1234X<$^R> X<$LAST_REGEXP_CODE_RESULT>
1235
1236The result of evaluation of the last successful C<(?{ code })>
241a59d9 1237regular expression assertion (see L<perlre>). May be written to.
b0c22438 1238
1239This variable was added in Perl 5.005.
a0d0e21e 1240
a3621e74 1241=item ${^RE_DEBUG_FLAGS}
ca1b95ae 1242X<${^RE_DEBUG_FLAGS}>
a3621e74 1243
241a59d9
FC
1244The current value of the regex debugging flags. Set to 0 for no debug output
1245even when the C<re 'debug'> module is loaded. See L<re> for details.
b0c22438 1246
60cf4914 1247This variable was added in Perl v5.10.0.
a3621e74 1248
0111c4fd 1249=item ${^RE_TRIE_MAXBUF}
ca1b95ae 1250X<${^RE_TRIE_MAXBUF}>
a3621e74
YO
1251
1252Controls how certain regex optimisations are applied and how much memory they
241a59d9
FC
1253utilize. This value by default is 65536 which corresponds to a 512kB
1254temporary cache. Set this to a higher value to trade
1255memory for speed when matching large alternations. Set
1256it to a lower value if you want the optimisations to
a3621e74
YO
1257be as conservative of memory as possible but still occur, and set it to a
1258negative value to prevent the optimisation and conserve the most memory.
1259Under normal situations this variable should be of no interest to you.
1260
60cf4914 1261This variable was added in Perl v5.10.0.
a0d0e21e 1262
b0c22438 1263=back
a0d0e21e 1264
b0c22438 1265=head2 Variables related to filehandles
a0d0e21e 1266
b0c22438 1267Variables that depend on the currently selected filehandle may be set
1268by calling an appropriate object method on the C<IO::Handle> object,
1269although this is less efficient than using the regular built-in
241a59d9 1270variables. (Summary lines below for this contain the word HANDLE.)
b0c22438 1271First you must say
6e2995f4 1272
9548c15c 1273 use IO::Handle;
0462a1ab 1274
b0c22438 1275after which you may use either
0462a1ab 1276
9548c15c 1277 method HANDLE EXPR
0462a1ab 1278
b0c22438 1279or more safely,
0462a1ab 1280
9548c15c 1281 HANDLE->method(EXPR)
0462a1ab 1282
241a59d9 1283Each method returns the old value of the C<IO::Handle> attribute. The
b0c22438 1284methods each take an optional EXPR, which, if supplied, specifies the
241a59d9 1285new value for the C<IO::Handle> attribute in question. If not
b0c22438 1286supplied, most methods do nothing to the current value--except for
1287C<autoflush()>, which will assume a 1 for you, just to be different.
0462a1ab 1288
b0c22438 1289Because loading in the C<IO::Handle> class is an expensive operation,
1290you should learn how to use the regular built-in variables.
1291
241a59d9 1292A few of these variables are considered "read-only". This means that
b0c22438 1293if you try to assign to this variable, either directly or indirectly
1294through a reference, you'll raise a run-time exception.
1295
1296You should be very careful when modifying the default values of most
241a59d9 1297special variables described in this document. In most cases you want
b0c22438 1298to localize these variables before changing them, since if you don't,
1299the change may affect other modules which rely on the default values
241a59d9 1300of the special variables that you have changed. This is one of the
b0c22438 1301correct ways to read the whole file at once:
1302
9548c15c
FC
1303 open my $fh, "<", "foo" or die $!;
1304 local $/; # enable localized slurp mode
1305 my $content = <$fh>;
1306 close $fh;
b0c22438 1307
1308But the following code is quite bad:
1309
9548c15c
FC
1310 open my $fh, "<", "foo" or die $!;
1311 undef $/; # enable slurp mode
1312 my $content = <$fh>;
1313 close $fh;
b0c22438 1314
1315since some other module, may want to read data from some file in the
1316default "line mode", so if the code we have just presented has been
1317executed, the global value of C<$/> is now changed for any other code
1318running inside the same Perl interpreter.
1319
1320Usually when a variable is localized you want to make sure that this
241a59d9
FC
1321change affects the shortest scope possible. So unless you are already
1322inside some short C<{}> block, you should create one yourself. For
b0c22438 1323example:
1324
9548c15c
FC
1325 my $content = '';
1326 open my $fh, "<", "foo" or die $!;
1327 {
1328 local $/;
1329 $content = <$fh>;
1330 }
1331 close $fh;
0462a1ab 1332
b0c22438 1333Here is an example of how your own code can go broken:
0462a1ab 1334
9548c15c
FC
1335 for ( 1..3 ){
1336 $\ = "\r\n";
1337 nasty_break();
1338 print "$_";
1339 }
0b9346e6 1340
9548c15c 1341 sub nasty_break {
0b9346e6 1342 $\ = "\f";
1343 # do something with $_
9548c15c 1344 }
0462a1ab 1345
0b9346e6 1346You probably expect this code to print the equivalent of
0462a1ab 1347
0b9346e6 1348 "1\r\n2\r\n3\r\n"
0462a1ab 1349
b0c22438 1350but instead you get:
0462a1ab 1351
0b9346e6 1352 "1\f2\f3\f"
0462a1ab 1353
0b9346e6 1354Why? Because C<nasty_break()> modifies C<$\> without localizing it
241a59d9
FC
1355first. The value you set in C<nasty_break()> is still there when you
1356return. The fix is to add C<local()> so the value doesn't leak out of
0b9346e6 1357C<nasty_break()>:
6e2995f4 1358
9548c15c 1359 local $\ = "\f";
a0d0e21e 1360
b0c22438 1361It's easy to notice the problem in such a short example, but in more
1362complicated code you are looking for trouble if you don't localize
1363changes to the special variables.
a0d0e21e 1364
b0c22438 1365=over 8
a0d0e21e 1366
b0c22438 1367=item $ARGV
1368X<$ARGV>
fb73857a 1369
ca1b95ae 1370Contains the name of the current file when reading from C<< <> >>.
b0c22438 1371
1372=item @ARGV
1373X<@ARGV>
1374
ca1b95ae 1375The array C<@ARGV> contains the command-line arguments intended for
241a59d9 1376the script. C<$#ARGV> is generally the number of arguments minus
b0c22438 1377one, because C<$ARGV[0]> is the first argument, I<not> the program's
241a59d9 1378command name itself. See L</$0> for the command name.
b0c22438 1379
84dabc03 1380=item ARGV
1381X<ARGV>
1382
1383The special filehandle that iterates over command-line filenames in
241a59d9
FC
1384C<@ARGV>. Usually written as the null filehandle in the angle operator
1385C<< <> >>. Note that currently C<ARGV> only has its magical effect
84dabc03 1386within the C<< <> >> operator; elsewhere it is just a plain filehandle
241a59d9 1387corresponding to the last file opened by C<< <> >>. In particular,
84dabc03 1388passing C<\*ARGV> as a parameter to a function that expects a filehandle
1389may not cause your function to automatically read the contents of all the
1390files in C<@ARGV>.
1391
b0c22438 1392=item ARGVOUT
1393X<ARGVOUT>
1394
1395The special filehandle that points to the currently open output file
241a59d9
FC
1396when doing edit-in-place processing with B<-i>. Useful when you have
1397to do a lot of inserting and don't want to keep modifying C<$_>. See
b0c22438 1398L<perlrun> for the B<-i> switch.
1399
96948506 1400=item IO::Handle->output_field_separator( EXPR )
84dabc03 1401
1402=item $OUTPUT_FIELD_SEPARATOR
1403
1404=item $OFS
1405
1406=item $,
1407X<$,> X<$OFS> X<$OUTPUT_FIELD_SEPARATOR>
1408
241a59d9
FC
1409The output field separator for the print operator. If defined, this
1410value is printed between each of print's arguments. Default is C<undef>.
84dabc03 1411
96948506 1412You cannot call C<output_field_separator()> on a handle, only as a
008f9687 1413static method. See L<IO::Handle|IO::Handle>.
96948506 1414
84dabc03 1415Mnemonic: what is printed when there is a "," in your print statement.
1416
5b442a2a 1417=item HANDLE->input_line_number( EXPR )
b0c22438 1418
1419=item $INPUT_LINE_NUMBER
1420
1421=item $NR
1422
1423=item $.
1424X<$.> X<$NR> X<$INPUT_LINE_NUMBER> X<line number>
1425
1426Current line number for the last filehandle accessed.
1427
1428Each filehandle in Perl counts the number of lines that have been read
241a59d9 1429from it. (Depending on the value of C<$/>, Perl's idea of what
b0c22438 1430constitutes a line may not match yours.) When a line is read from a
1431filehandle (via C<readline()> or C<< <> >>), or when C<tell()> or
1432C<seek()> is called on it, C<$.> becomes an alias to the line counter
1433for that filehandle.
1434
1435You can adjust the counter by assigning to C<$.>, but this will not
241a59d9
FC
1436actually move the seek pointer. I<Localizing C<$.> will not localize
1437the filehandle's line count>. Instead, it will localize perl's notion
b0c22438 1438of which filehandle C<$.> is currently aliased to.
1439
1440C<$.> is reset when the filehandle is closed, but B<not> when an open
241a59d9
FC
1441filehandle is reopened without an intervening C<close()>. For more
1442details, see L<perlop/"IE<sol>O Operators">. Because C<< <> >> never does
b0c22438 1443an explicit close, line numbers increase across C<ARGV> files (but see
1444examples in L<perlfunc/eof>).
1445
1446You can also use C<< HANDLE->input_line_number(EXPR) >> to access the
1447line counter for a given filehandle without having to worry about
1448which handle you last accessed.
1449
1450Mnemonic: many programs use "." to mean the current line number.
1451
96948506 1452=item IO::Handle->input_record_separator( EXPR )
b0c22438 1453
1454=item $INPUT_RECORD_SEPARATOR
1455
1456=item $RS
1457
1458=item $/
1459X<$/> X<$RS> X<$INPUT_RECORD_SEPARATOR>
1460
241a59d9
FC
1461The input record separator, newline by default. This influences Perl's
1462idea of what a "line" is. Works like B<awk>'s RS variable, including
84dabc03 1463treating empty lines as a terminator if set to the null string (an
241a59d9 1464empty line cannot contain any spaces or tabs). You may set it to a
84dabc03 1465multi-character string to match a multi-character terminator, or to
241a59d9 1466C<undef> to read through the end of file. Setting it to C<"\n\n">
84dabc03 1467means something slightly different than setting to C<"">, if the file
241a59d9
FC
1468contains consecutive empty lines. Setting to C<""> will treat two or
1469more consecutive empty lines as a single empty line. Setting to
84dabc03 1470C<"\n\n"> will blindly assume that the next input character belongs to
1471the next paragraph, even if it's a newline.
b0c22438 1472
1473 local $/; # enable "slurp" mode
1474 local $_ = <FH>; # whole file now here
1475 s/\n[ \t]+/ /g;
1476
241a59d9 1477Remember: the value of C<$/> is a string, not a regex. B<awk> has to
b0c22438 1478be better for something. :-)
1479
1480Setting C<$/> to a reference to an integer, scalar containing an
1481integer, or scalar that's convertible to an integer will attempt to
1482read records instead of lines, with the maximum record size being the
3d249121 1483referenced integer number of characters. So this:
b0c22438 1484
1485 local $/ = \32768; # or \"32768", or \$var_containing_32768
1486 open my $fh, "<", $myfile or die $!;
1487 local $_ = <$fh>;
fb73857a 1488
f1ee460b 1489will read a record of no more than 32768 characters from $fh. If you're
b0c22438 1490not reading from a record-oriented file (or your OS doesn't have
1491record-oriented files), then you'll likely get a full chunk of data
241a59d9
FC
1492with every read. If a record is larger than the record size you've
1493set, you'll get the record back in pieces. Trying to set the record
b3a2acfa
YO
1494size to zero or less is deprecated and will cause $/ to have the value
1495of "undef", which will cause reading in the (rest of the) whole file.
1496
1497As of 5.19.9 setting C<$/> to any other form of reference will throw a
1498fatal exception. This is in preparation for supporting new ways to set
1499C<$/> in the future.
6e2995f4 1500
78c28381 1501On VMS only, record reads bypass PerlIO layers and any associated
3d249121 1502buffering, so you must not mix record and non-record reads on the
78c28381
CB
1503same filehandle. Record mode mixes with line mode only when the
1504same buffering layer is in use for both modes.
5c055ba3 1505
96948506 1506You cannot call C<input_record_separator()> on a handle, only as a
008f9687 1507static method. See L<IO::Handle|IO::Handle>.
96948506 1508
008f9687 1509See also L<perlport/"Newlines">. Also see L</$.>.
9bf22702 1510
b0c22438 1511Mnemonic: / delimits line boundaries when quoting poetry.
5c055ba3 1512
96948506 1513=item IO::Handle->output_record_separator( EXPR )
84902520 1514
b0c22438 1515=item $OUTPUT_RECORD_SEPARATOR
84902520 1516
b0c22438 1517=item $ORS
84902520 1518
b0c22438 1519=item $\
1520X<$\> X<$ORS> X<$OUTPUT_RECORD_SEPARATOR>
84902520 1521
241a59d9
FC
1522The output record separator for the print operator. If defined, this
1523value is printed after the last of print's arguments. Default is C<undef>.
84902520 1524
96948506 1525You cannot call C<output_record_separator()> on a handle, only as a
008f9687 1526static method. See L<IO::Handle|IO::Handle>.
96948506 1527
b0c22438 1528Mnemonic: you set C<$\> instead of adding "\n" at the end of the print.
1529Also, it's just like C<$/>, but it's what you get "back" from Perl.
84902520 1530
5b442a2a 1531=item HANDLE->autoflush( EXPR )
1532
1533=item $OUTPUT_AUTOFLUSH
1534
84dabc03 1535=item $|
1536X<$|> X<autoflush> X<flush> X<$OUTPUT_AUTOFLUSH>
84902520 1537
84dabc03 1538If set to nonzero, forces a flush right away and after every write or
241a59d9 1539print on the currently selected output channel. Default is 0
84dabc03 1540(regardless of whether the channel is really buffered by the system or
1541not; C<$|> tells you only whether you've asked Perl explicitly to
241a59d9
FC
1542flush after each write). STDOUT will typically be line buffered if
1543output is to the terminal and block buffered otherwise. Setting this
84dabc03 1544variable is useful primarily when you are outputting to a pipe or
1545socket, such as when you are running a Perl program under B<rsh> and
241a59d9
FC
1546want to see the output as it's happening. This has no effect on input
1547buffering. See L<perlfunc/getc> for that. See L<perlfunc/select> on
1548how to select the output channel. See also L<IO::Handle>.
84dabc03 1549
1550Mnemonic: when you want your pipes to be piping hot.
1551
8561ea1d
FC
1552=item ${^LAST_FH}
1553X<${^LAST_FH}>
1554
1555This read-only variable contains a reference to the last-read filehandle.
1556This is set by C<< <HANDLE> >>, C<readline>, C<tell>, C<eof> and C<seek>.
1557This is the same handle that C<$.> and C<tell> and C<eof> without arguments
1558use. It is also the handle used when Perl appends ", <STDIN> line 1" to
1559an error or warning message.
1560
1561This variable was added in Perl v5.18.0.
1562
84dabc03 1563=back
84902520 1564
b0c22438 1565=head3 Variables related to formats
83ee9e09 1566
b0c22438 1567The special variables for formats are a subset of those for
241a59d9 1568filehandles. See L<perlform> for more information about Perl's
69b55ccc 1569formats.
83ee9e09 1570
b0c22438 1571=over 8
83ee9e09 1572
84dabc03 1573=item $ACCUMULATOR
1574
1575=item $^A
1576X<$^A> X<$ACCUMULATOR>
1577
1578The current value of the C<write()> accumulator for C<format()> lines.
1579A format contains C<formline()> calls that put their result into
241a59d9
FC
1580C<$^A>. After calling its format, C<write()> prints out the contents
1581of C<$^A> and empties. So you never really see the contents of C<$^A>
1582unless you call C<formline()> yourself and then look at it. See
96090e4f 1583L<perlform> and L<perlfunc/"formline PICTURE,LIST">.
84dabc03 1584
96948506 1585=item IO::Handle->format_formfeed(EXPR)
5b442a2a 1586
1587=item $FORMAT_FORMFEED
1588
84dabc03 1589=item $^L
1590X<$^L> X<$FORMAT_FORMFEED>
1591
241a59d9 1592What formats output as a form feed. The default is C<\f>.
84dabc03 1593
96948506 1594You cannot call C<format_formfeed()> on a handle, only as a static
008f9687 1595method. See L<IO::Handle|IO::Handle>.
96948506 1596
b0c22438 1597=item HANDLE->format_page_number(EXPR)
83ee9e09 1598
b0c22438 1599=item $FORMAT_PAGE_NUMBER
83ee9e09 1600
b0c22438 1601=item $%
1602X<$%> X<$FORMAT_PAGE_NUMBER>
83ee9e09 1603
b0c22438 1604The current page number of the currently selected output channel.
83ee9e09 1605
b0c22438 1606Mnemonic: C<%> is page number in B<nroff>.
7619c85e 1607
b0c22438 1608=item HANDLE->format_lines_left(EXPR)
b9ac3b5b 1609
b0c22438 1610=item $FORMAT_LINES_LEFT
66558a10 1611
b0c22438 1612=item $-
1613X<$-> X<$FORMAT_LINES_LEFT>
fb73857a 1614
b0c22438 1615The number of lines left on the page of the currently selected output
1616channel.
fa05a9fd 1617
b0c22438 1618Mnemonic: lines_on_page - lines_printed.
fa05a9fd 1619
96948506 1620=item IO::Handle->format_line_break_characters EXPR
fb73857a 1621
84dabc03 1622=item $FORMAT_LINE_BREAK_CHARACTERS
a0d0e21e 1623
84dabc03 1624=item $:
1625X<$:> X<FORMAT_LINE_BREAK_CHARACTERS>
a0d0e21e 1626
84dabc03 1627The current set of characters after which a string may be broken to
241a59d9 1628fill continuation fields (starting with C<^>) in a format. The default is
84dabc03 1629S<" \n-">, to break on a space, newline, or a hyphen.
a0d0e21e 1630
96948506 1631You cannot call C<format_line_break_characters()> on a handle, only as
008f9687 1632a static method. See L<IO::Handle|IO::Handle>.
96948506 1633
84dabc03 1634Mnemonic: a "colon" in poetry is a part of a line.
1635
1636=item HANDLE->format_lines_per_page(EXPR)
1637
1638=item $FORMAT_LINES_PER_PAGE
1639
1640=item $=
1641X<$=> X<$FORMAT_LINES_PER_PAGE>
1642
1643The current page length (printable lines) of the currently selected
241a59d9 1644output channel. The default is 60.
84dabc03 1645
1646Mnemonic: = has horizontal lines.
7c36658b 1647
b0c22438 1648=item HANDLE->format_top_name(EXPR)
7c36658b 1649
b0c22438 1650=item $FORMAT_TOP_NAME
a05d7ebb 1651
b0c22438 1652=item $^
1653X<$^> X<$FORMAT_TOP_NAME>
fde18df1 1654
b0c22438 1655The name of the current top-of-page format for the currently selected
241a59d9
FC
1656output channel. The default is the name of the filehandle with C<_TOP>
1657appended. For example, the default format top name for the C<STDOUT>
12abbafd 1658filehandle is C<STDOUT_TOP>.
e07ea26a 1659
b0c22438 1660Mnemonic: points to top of page.
e07ea26a 1661
84dabc03 1662=item HANDLE->format_name(EXPR)
16070b82 1663
84dabc03 1664=item $FORMAT_NAME
aa2f2a36 1665
84dabc03 1666=item $~
1667X<$~> X<$FORMAT_NAME>
aa2f2a36 1668
84dabc03 1669The name of the current report format for the currently selected
241a59d9
FC
1670output channel. The default format name is the same as the filehandle
1671name. For example, the default format name for the C<STDOUT>
84dabc03 1672filehandle is just C<STDOUT>.
16070b82 1673
84dabc03 1674Mnemonic: brother to C<$^>.
16070b82 1675
b0c22438 1676=back
a0d0e21e 1677
84dabc03 1678=head2 Error Variables
b0c22438 1679X<error> X<exception>
a0d0e21e 1680
b0c22438 1681The variables C<$@>, C<$!>, C<$^E>, and C<$?> contain information
1682about different types of error conditions that may appear during
241a59d9 1683execution of a Perl program. The variables are shown ordered by
b0c22438 1684the "distance" between the subsystem which reported the error and
241a59d9 1685the Perl process. They correspond to errors detected by the Perl
b0c22438 1686interpreter, C library, operating system, or an external program,
1687respectively.
4438c4b7 1688
b0c22438 1689To illustrate the differences between these variables, consider the
241a59d9 1690following Perl expression, which uses a single-quoted string. After
7fd683ff 1691execution of this statement, perl may have set all four special error
7333b1c4 1692variables:
4438c4b7 1693
9548c15c
FC
1694 eval q{
1695 open my $pipe, "/cdrom/install |" or die $!;
1696 my @res = <$pipe>;
1697 close $pipe or die "bad pipe: $?, $!";
1698 };
a0d0e21e 1699
7333b1c4 1700When perl executes the C<eval()> expression, it translates the
1701C<open()>, C<< <PIPE> >>, and C<close> calls in the C run-time library
241a59d9 1702and thence to the operating system kernel. perl sets C<$!> to
7333b1c4 1703the C library's C<errno> if one of these calls fails.
2a8c8378 1704
84dabc03 1705C<$@> is set if the string to be C<eval>-ed did not compile (this may
1706happen if C<open> or C<close> were imported with bad prototypes), or
241a59d9 1707if Perl code executed during evaluation C<die()>d. In these cases the
0b9346e6 1708value of C<$@> is the compile error, or the argument to C<die> (which
241a59d9 1709will interpolate C<$!> and C<$?>). (See also L<Fatal>, though.)
2a8c8378 1710
84dabc03 1711Under a few operating systems, C<$^E> may contain a more verbose error
241a59d9 1712indicator, such as in this case, "CDROM tray not closed." Systems that
84dabc03 1713do not support extended error messages leave C<$^E> the same as C<$!>.
a0d0e21e 1714
2e6ba115 1715Finally, C<$?> may be set to a non-0 value if the external program
241a59d9 1716F</cdrom/install> fails. The upper eight bits reflect specific error
84dabc03 1717conditions encountered by the program (the program's C<exit()> value).
1718The lower eight bits reflect mode of failure, like signal death and
241a59d9 1719core dump information. See L<wait(2)> for details. In contrast to
2e6ba115 1720C<$!> and C<$^E>, which are set only if an error condition is detected,
84dabc03 1721the variable C<$?> is set on each C<wait> or pipe C<close>,
241a59d9 1722overwriting the old value. This is more like C<$@>, which on every
84dabc03 1723C<eval()> is always set on failure and cleared on success.
a0d0e21e 1724
b0c22438 1725For more details, see the individual descriptions at C<$@>, C<$!>,
1726C<$^E>, and C<$?>.
38e4f4ae 1727
0b9346e6 1728=over 8
1729
b0c22438 1730=item ${^CHILD_ERROR_NATIVE}
1731X<$^CHILD_ERROR_NATIVE>
a0d0e21e 1732
b0c22438 1733The native status returned by the last pipe close, backtick (C<``>)
1734command, successful call to C<wait()> or C<waitpid()>, or from the
241a59d9 1735C<system()> operator. On POSIX-like systems this value can be decoded
b0c22438 1736with the WIFEXITED, WEXITSTATUS, WIFSIGNALED, WTERMSIG, WIFSTOPPED,
1737WSTOPSIG and WIFCONTINUED functions provided by the L<POSIX> module.
a0d0e21e 1738
b0c22438 1739Under VMS this reflects the actual VMS exit status; i.e. it is the
1740same as C<$?> when the pragma C<use vmsish 'status'> is in effect.
a0d0e21e 1741
60cf4914 1742This variable was added in Perl v5.10.0.
a0d0e21e 1743
5b442a2a 1744=item $EXTENDED_OS_ERROR
1745
84dabc03 1746=item $^E
1747X<$^E> X<$EXTENDED_OS_ERROR>
1748
241a59d9 1749Error information specific to the current operating system. At the
a804e657 1750moment, this differs from C<L</$!>> under only VMS, OS/2, and Win32 (and
241a59d9 1751for MacPerl). On all other platforms, C<$^E> is always just the same
84dabc03 1752as C<$!>.
1753
1754Under VMS, C<$^E> provides the VMS status value from the last system
241a59d9
FC
1755error. This is more specific information about the last system error
1756than that provided by C<$!>. This is particularly important when C<$!>
84dabc03 1757is set to B<EVMSERR>.
1758
1759Under OS/2, C<$^E> is set to the error code of the last call to OS/2
1760API either via CRT, or directly from perl.
1761
1762Under Win32, C<$^E> always returns the last error information reported
1763by the Win32 call C<GetLastError()> which describes the last error
241a59d9
FC
1764from within the Win32 API. Most Win32-specific code will report errors
1765via C<$^E>. ANSI C and Unix-like calls set C<errno> and so most
84dabc03 1766portable Perl code will report errors via C<$!>.
1767
a95b3d6a 1768Caveats mentioned in the description of C<L</$!>> generally apply to
84dabc03 1769C<$^E>, also.
1770
1771This variable was added in Perl 5.003.
1772
1773Mnemonic: Extra error explanation.
0b9346e6 1774
84dabc03 1775=item $EXCEPTIONS_BEING_CAUGHT
1776
1777=item $^S
1778X<$^S> X<$EXCEPTIONS_BEING_CAUGHT>
1779
1780Current state of the interpreter.
1781
ca1b95ae 1782 $^S State
aa959a20
FC
1783 --------- -------------------------------------
1784 undef Parsing module, eval, or main program
ca1b95ae 1785 true (1) Executing an eval
1786 false (0) Otherwise
84dabc03 1787
1788The first state may happen in C<$SIG{__DIE__}> and C<$SIG{__WARN__}>
1789handlers.
1790
aa959a20
FC
1791The English name $EXCEPTIONS_BEING_CAUGHT is slightly misleading, because
1792the C<undef> value does not indicate whether exceptions are being caught,
1793since compilation of the main program does not catch exceptions.
1794
84dabc03 1795This variable was added in Perl 5.004.
1796
1797=item $WARNING
1798
1799=item $^W
1800X<$^W> X<$WARNING>
1801
1802The current value of the warning switch, initially true if B<-w> was
1803used, false otherwise, but directly modifiable.
1804
1805See also L<warnings>.
1806
0b9346e6 1807Mnemonic: related to the B<-w> switch.
84dabc03 1808
1809=item ${^WARNING_BITS}
ca1b95ae 1810X<${^WARNING_BITS}>
84dabc03 1811
1812The current set of warning checks enabled by the C<use warnings> pragma.
44567c86
FC
1813It has the same scoping as the C<$^H> and C<%^H> variables. The exact
1814values are considered internal to the L<warnings> pragma and may change
1815between versions of Perl.
84dabc03 1816
60cf4914 1817This variable was added in Perl v5.6.0.
84dabc03 1818
b0c22438 1819=item $OS_ERROR
5ccee41e 1820
b0c22438 1821=item $ERRNO
5ccee41e 1822
b0c22438 1823=item $!
1824X<$!> X<$ERRNO> X<$OS_ERROR>
9b0e6e7a 1825
a73bef78
JL
1826When referenced, C<$!> retrieves the current value
1827of the C C<errno> integer variable.
1828If C<$!> is assigned a numerical value, that value is stored in C<errno>.
1829When referenced as a string, C<$!> yields the system error string
1830corresponding to C<errno>.
1831
1832Many system or library calls set C<errno> if they fail,
1833to indicate the cause of failure. They usually do B<not>
1834set C<errno> to zero if they succeed. This means C<errno>,
1835hence C<$!>, is meaningful only I<immediately> after a B<failure>:
1836
1837 if (open my $fh, "<", $filename) {
ca1b95ae 1838 # Here $! is meaningless.
1839 ...
7fd683ff 1840 }
ca1b95ae 1841 else {
1842 # ONLY here is $! meaningful.
1843 ...
1844 # Already here $! might be meaningless.
b0c22438 1845 }
1846 # Since here we might have either success or failure,
a73bef78 1847 # $! is meaningless.
a0d0e21e 1848
a73bef78
JL
1849Here, I<meaningless> means that C<$!> may be unrelated to the outcome
1850of the C<open()> operator. Assignment to C<$!> is similarly ephemeral.
1851It can be used immediately before invoking the C<die()> operator,
1852to set the exit value, or to inspect the system error string
1853corresponding to error I<n>, or to restore C<$!> to a meaningful state.
d54b56d5 1854
b0c22438 1855Mnemonic: What just went bang?
314d39ce 1856
b0c22438 1857=item %OS_ERROR
fb73857a 1858
b0c22438 1859=item %ERRNO
fb73857a 1860
b0c22438 1861=item %!
5b442a2a 1862X<%!> X<%OS_ERROR> X<%ERRNO>
a0d0e21e 1863
b0c22438 1864Each element of C<%!> has a true value only if C<$!> is set to that
241a59d9 1865value. For example, C<$!{ENOENT}> is true if and only if the current
84dabc03 1866value of C<$!> is C<ENOENT>; that is, if the most recent error was "No
1867such file or directory" (or its moral equivalent: not all operating
3b90fd91
RS
1868systems give that exact error, and certainly not all languages). The
1869specific true value is not guaranteed, but in the past has generally
1870been the numeric value of C<$!>. To check if a particular key is
1871meaningful on your system, use C<exists $!{the_key}>; for a list of legal
1872keys, use C<keys %!>. See L<Errno> for more information, and also see
1873L</$!>.
a0d0e21e 1874
b0c22438 1875This variable was added in Perl 5.005.
44f0be63 1876
84dabc03 1877=item $CHILD_ERROR
b687b08b 1878
84dabc03 1879=item $?
1880X<$?> X<$CHILD_ERROR>
a0d0e21e 1881
84dabc03 1882The status returned by the last pipe close, backtick (C<``>) command,
1883successful call to C<wait()> or C<waitpid()>, or from the C<system()>
241a59d9 1884operator. This is just the 16-bit status word returned by the
84dabc03 1885traditional Unix C<wait()> system call (or else is made up to look
241a59d9 1886like it). Thus, the exit value of the subprocess is really (C<<< $? >>
84dabc03 18878 >>>), and C<$? & 127> gives which signal, if any, the process died
1888from, and C<$? & 128> reports whether there was a core dump.
a0d0e21e 1889
84dabc03 1890Additionally, if the C<h_errno> variable is supported in C, its value
1891is returned via C<$?> if any C<gethost*()> function fails.
b687b08b 1892
84dabc03 1893If you have installed a signal handler for C<SIGCHLD>, the
1894value of C<$?> will usually be wrong outside that handler.
a0d0e21e 1895
84dabc03 1896Inside an C<END> subroutine C<$?> contains the value that is going to be
241a59d9
FC
1897given to C<exit()>. You can modify C<$?> in an C<END> subroutine to
1898change the exit status of your program. For example:
a0d0e21e 1899
84dabc03 1900 END {
1901 $? = 1 if $? == 255; # die would make it 255
1902 }
a0d0e21e 1903
84dabc03 1904Under VMS, the pragma C<use vmsish 'status'> makes C<$?> reflect the
1905actual VMS exit status, instead of the default emulation of POSIX
1906status; see L<perlvms/$?> for details.
1907
1908Mnemonic: similar to B<sh> and B<ksh>.
a0d0e21e 1909
b0c22438 1910=item $EVAL_ERROR
f648820c 1911
b0c22438 1912=item $@
1913X<$@> X<$EVAL_ERROR>
a0d0e21e 1914
2e6ba115
LM
1915The Perl error from the last C<eval> operator, i.e. the last exception that
1916was caught. For C<eval BLOCK>, this is either a runtime error message or the
1917string or reference C<die> was called with. The C<eval STRING> form also
1918catches syntax errors and other compile time exceptions.
1919
1920If no error occurs, C<eval> sets C<$@> to the empty string.
a0d0e21e 1921
241a59d9 1922Warning messages are not collected in this variable. You can, however,
b0c22438 1923set up a routine to process warnings by setting C<$SIG{__WARN__}> as
7333b1c4 1924described in L</%SIG>.
748a9306 1925
2e6ba115 1926Mnemonic: Where was the error "at"?
7f315d2e 1927
b0c22438 1928=back
7f315d2e 1929
1fa81471
DR
1930=head2 Variables related to the interpreter state
1931
1932These variables provide information about the current interpreter state.
1933
1934=over 8
1935
1936=item $COMPILING
1937
1938=item $^C
1939X<$^C> X<$COMPILING>
1940
1941The current value of the flag associated with the B<-c> switch.
1942Mainly of use with B<-MO=...> to allow code to alter its behavior
1943when being compiled, such as for example to C<AUTOLOAD> at compile
241a59d9 1944time rather than normal, deferred loading. Setting
1fa81471
DR
1945C<$^C = 1> is similar to calling C<B::minus_c>.
1946
60cf4914 1947This variable was added in Perl v5.6.0.
1fa81471
DR
1948
1949=item $DEBUGGING
1950
1951=item $^D
1952X<$^D> X<$DEBUGGING>
1953
241a59d9 1954The current value of the debugging flags. May be read or set. Like its
a975eeba 1955L<command-line equivalent|perlrun/B<-D>I<letters>>, you can use numeric
8af589bf
KW
1956or symbolic values, e.g. C<$^D = 10> or C<$^D = "st">. See
1957L<perlrun/B<-D>I<number>>. The contents of this variable also affects the
1958debugger operation. See L<perldebguts/Debugger Internals>.
1fa81471
DR
1959
1960Mnemonic: value of B<-D> switch.
1961
1962=item ${^ENCODING}
1963X<${^ENCODING}>
1964
981b911e 1965This variable is no longer supported.
a3ee04ba 1966
981b911e
FC
1967It used to hold the I<object reference> to the C<Encode> object that was
1968used to convert the source code to Unicode.
a3ee04ba 1969
981b911e
FC
1970Its purpose was to allow your non-ASCII Perl
1971scripts not to have to be written in UTF-8; this was
a3ee04ba 1972useful before editors that worked on UTF-8 encoded text were common, but
981b911e
FC
1973that was long ago. It caused problems, such as affecting the operation
1974of other modules that weren't expecting it, causing general mayhem.
a3ee04ba 1975
981b911e
FC
1976If you need something like this functionality, it is recommended that use
1977you a simple source filter, such as L<Filter::Encoding>.
a3ee04ba
KW
1978
1979If you are coming here because code of yours is being adversely affected
1980by someone's use of this variable, you can usually work around it by
1981doing this:
1982
1983 local ${^ENCODING};
1984
1985near the beginning of the functions that are getting broken. This
1986undefines the variable during the scope of execution of the including
1987function.
1fa81471 1988
981b911e 1989This variable was added in Perl 5.8.2 and removed in 5.26.0.
1fa81471
DR
1990
1991=item ${^GLOBAL_PHASE}
1992X<${^GLOBAL_PHASE}>
1993
1994The current phase of the perl interpreter.
1995
1996Possible values are:
1997
1998=over 8
1999
2000=item CONSTRUCT
2001
241a59d9 2002The C<PerlInterpreter*> is being constructed via C<perl_construct>. This
1fa81471 2003value is mostly there for completeness and for use via the
241a59d9 2004underlying C variable C<PL_phase>. It's not really possible for Perl
1fa81471
DR
2005code to be executed unless construction of the interpreter is
2006finished.
2007
2008=item START
2009
241a59d9 2010This is the global compile-time. That includes, basically, every
1fa81471
DR
2011C<BEGIN> block executed directly or indirectly from during the
2012compile-time of the top-level program.
2013
2014This phase is not called "BEGIN" to avoid confusion with
2015C<BEGIN>-blocks, as those are executed during compile-time of any
241a59d9 2016compilation unit, not just the top-level program. A new, localised
1fa81471
DR
2017compile-time entered at run-time, for example by constructs as
2018C<eval "use SomeModule"> are not global interpreter phases, and
2019therefore aren't reflected by C<${^GLOBAL_PHASE}>.
2020
2021=item CHECK
2022
2023Execution of any C<CHECK> blocks.
2024
2025=item INIT
2026
2027Similar to "CHECK", but for C<INIT>-blocks, not C<CHECK> blocks.
2028
2029=item RUN
2030
2031The main run-time, i.e. the execution of C<PL_main_root>.
2032
2033=item END
2034
2035Execution of any C<END> blocks.
2036
2037=item DESTRUCT
2038
2039Global destruction.
2040
2041=back
2042
241a59d9 2043Also note that there's no value for UNITCHECK-blocks. That's because
1fa81471
DR
2044those are run for each compilation unit individually, and therefore is
2045not a global interpreter phase.
2046
2047Not every program has to go through each of the possible phases, but
2048transition from one phase to another can only happen in the order
2049described in the above list.
2050
2051An example of all of the phases Perl code can see:
2052
2053 BEGIN { print "compile-time: ${^GLOBAL_PHASE}\n" }
2054
2055 INIT { print "init-time: ${^GLOBAL_PHASE}\n" }
2056
2057 CHECK { print "check-time: ${^GLOBAL_PHASE}\n" }
2058
2059 {
2060 package Print::Phase;
2061
2062 sub new {
2063 my ($class, $time) = @_;
2064 return bless \$time, $class;
2065 }
2066
2067 sub DESTROY {
2068 my $self = shift;
2069 print "$$self: ${^GLOBAL_PHASE}\n";
2070 }
2071 }
2072
2073 print "run-time: ${^GLOBAL_PHASE}\n";
2074
2075 my $runtime = Print::Phase->new(
2076 "lexical variables are garbage collected before END"
2077 );
2078
2079 END { print "end-time: ${^GLOBAL_PHASE}\n" }
2080
2081 our $destruct = Print::Phase->new(
2082 "package variables are garbage collected after END"
2083 );
2084
2085This will print out
2086
2087 compile-time: START
2088 check-time: CHECK
2089 init-time: INIT
2090 run-time: RUN
2091 lexical variables are garbage collected before END: RUN
2092 end-time: END
2093 package variables are garbage collected after END: DESTRUCT
2094
2095This variable was added in Perl 5.14.0.
2096
2097=item $^H
2098X<$^H>
2099
241a59d9
FC
2100WARNING: This variable is strictly for
2101internal use only. Its availability,
1fa81471
DR
2102behavior, and contents are subject to change without notice.
2103
241a59d9 2104This variable contains compile-time hints for the Perl interpreter. At the
1fa81471
DR
2105end of compilation of a BLOCK the value of this variable is restored to the
2106value when the interpreter started to compile the BLOCK.
2107
2108When perl begins to parse any block construct that provides a lexical scope
2109(e.g., eval body, required file, subroutine body, loop body, or conditional
2110block), the existing value of C<$^H> is saved, but its value is left unchanged.
2111When the compilation of the block is completed, it regains the saved value.
2112Between the points where its value is saved and restored, code that
2113executes within BEGIN blocks is free to change the value of C<$^H>.
2114
2115This behavior provides the semantic of lexical scoping, and is used in,
2116for instance, the C<use strict> pragma.
2117
2118The contents should be an integer; different bits of it are used for
241a59d9 2119different pragmatic flags. Here's an example:
1fa81471 2120
9548c15c 2121 sub add_100 { $^H |= 0x100 }
1fa81471 2122
9548c15c
FC
2123 sub foo {
2124 BEGIN { add_100() }
2125 bar->baz($boon);
2126 }
1fa81471 2127
241a59d9 2128Consider what happens during execution of the BEGIN block. At this point
1fa81471 2129the BEGIN block has already been compiled, but the body of C<foo()> is still
241a59d9
FC
2130being compiled. The new value of C<$^H>
2131will therefore be visible only while
1fa81471
DR
2132the body of C<foo()> is being compiled.
2133
2134Substitution of C<BEGIN { add_100() }> block with:
2135
9548c15c 2136 BEGIN { require strict; strict->import('vars') }
1fa81471 2137
241a59d9 2138demonstrates how C<use strict 'vars'> is implemented. Here's a conditional
1fa81471
DR
2139version of the same lexical pragma:
2140
9548c15c
FC
2141 BEGIN {
2142 require strict; strict->import('vars') if $condition
2143 }
1fa81471
DR
2144
2145This variable was added in Perl 5.003.
2146
2147=item %^H
2148X<%^H>
2149
241a59d9
FC
2150The C<%^H> hash provides the same scoping semantic as C<$^H>. This makes
2151it useful for implementation of lexically scoped pragmas. See
112284f4
KW
2152L<perlpragma>. All the entries are stringified when accessed at
2153runtime, so only simple values can be accommodated. This means no
2154pointers to objects, for example.
1fa81471
DR
2155
2156When putting items into C<%^H>, in order to avoid conflicting with other
2157users of the hash there is a convention regarding which keys to use.
2158A module should use only keys that begin with the module's name (the
2159name of its main package) and a "/" character. For example, a module
2160C<Foo::Bar> should use keys such as C<Foo::Bar/baz>.
2161
60cf4914 2162This variable was added in Perl v5.6.0.
1fa81471
DR
2163
2164=item ${^OPEN}
2165X<${^OPEN}>
2166
241a59d9 2167An internal variable used by PerlIO. A string in two parts, separated
1fa81471
DR
2168by a C<\0> byte, the first part describes the input layers, the second
2169part describes the output layers.
2170
60cf4914 2171This variable was added in Perl v5.8.0.
1fa81471
DR
2172
2173=item $PERLDB
2174
2175=item $^P
2176X<$^P> X<$PERLDB>
2177
241a59d9 2178The internal variable for debugging support. The meanings of the
1fa81471
DR
2179various bits are subject to change, but currently indicate:
2180
2181=over 6
2182
2183=item 0x01
2184
2185Debug subroutine enter/exit.
2186
2187=item 0x02
2188
241a59d9
FC
2189Line-by-line debugging. Causes C<DB::DB()> subroutine to be called for
2190each statement executed. Also causes saving source code lines (like
21910x400).
1fa81471
DR
2192
2193=item 0x04
2194
2195Switch off optimizations.
2196
2197=item 0x08
2198
2199Preserve more data for future interactive inspections.
2200
2201=item 0x10
2202
2203Keep info about source lines on which a subroutine is defined.
2204
2205=item 0x20
2206
2207Start with single-step on.
2208
2209=item 0x40
2210
2211Use subroutine address instead of name when reporting.
2212
2213=item 0x80
2214
2215Report C<goto &subroutine> as well.
2216
2217=item 0x100
2218
2219Provide informative "file" names for evals based on the place they were compiled.
2220
2221=item 0x200
2222
2223Provide informative names to anonymous subroutines based on the place they
2224were compiled.
2225
2226=item 0x400
2227
2228Save source code lines into C<@{"_<$filename"}>.
2229
aab47982
RS
2230=item 0x800
2231
2232When saving source, include evals that generate no subroutines.
2233
2234=item 0x1000
2235
2236When saving source, include source that did not compile.
2237
1fa81471
DR
2238=back
2239
2240Some bits may be relevant at compile-time only, some at
241a59d9 2241run-time only. This is a new mechanism and the details may change.
1fa81471
DR
2242See also L<perldebguts>.
2243
2244=item ${^TAINT}
2245X<${^TAINT}>
2246
241a59d9 2247Reflects if taint mode is on or off. 1 for on (the program was run with
1fa81471
DR
2248B<-T>), 0 for off, -1 when only taint warnings are enabled (i.e. with
2249B<-t> or B<-TU>).
2250
2251This variable is read-only.
2252
60cf4914 2253This variable was added in Perl v5.8.0.
1fa81471
DR
2254
2255=item ${^UNICODE}
2256X<${^UNICODE}>
2257
241a59d9 2258Reflects certain Unicode settings of Perl. See L<perlrun>
1fa81471
DR
2259documentation for the C<-C> switch for more information about
2260the possible values.
2261
2262This variable is set during Perl startup and is thereafter read-only.
2263
60cf4914 2264This variable was added in Perl v5.8.2.
1fa81471
DR
2265
2266=item ${^UTF8CACHE}
2267X<${^UTF8CACHE}>
2268
2269This variable controls the state of the internal UTF-8 offset caching code.
22701 for on (the default), 0 for off, -1 to debug the caching code by checking
2271all its results against linear scans, and panicking on any discrepancy.
2272
94df5432
KW
2273This variable was added in Perl v5.8.9. It is subject to change or
2274removal without notice, but is currently used to avoid recalculating the
2275boundaries of multi-byte UTF-8-encoded characters.
1fa81471
DR
2276
2277=item ${^UTF8LOCALE}
2278X<${^UTF8LOCALE}>
2279
2280This variable indicates whether a UTF-8 locale was detected by perl at
241a59d9 2281startup. This information is used by perl when it's in
1fa81471
DR
2282adjust-utf8ness-to-locale mode (as when run with the C<-CL> command-line
2283switch); see L<perlrun> for more info on this.
2284
60cf4914 2285This variable was added in Perl v5.8.8.
1fa81471
DR
2286
2287=back
2288
b0c22438 2289=head2 Deprecated and removed variables
7f315d2e 2290
0b9346e6 2291Deprecating a variable announces the intent of the perl maintainers to
241a59d9
FC
2292eventually remove the variable from the language. It may still be
2293available despite its status. Using a deprecated variable triggers
b0c22438 2294a warning.
7f315d2e 2295
84dabc03 2296Once a variable is removed, its use triggers an error telling you
b0c22438 2297the variable is unsupported.
7f315d2e 2298
84dabc03 2299See L<perldiag> for details about error messages.
7f315d2e 2300
b0c22438 2301=over 8
7f315d2e 2302
84dabc03 2303=item $#
b7a15f05 2304X<$#>
84dabc03 2305
38e5787b 2306C<$#> was a variable that could be used to format printed numbers.
60cf4914 2307After a deprecation cycle, its magic was removed in Perl v5.10.0 and
84dabc03 2308using it now triggers a warning: C<$# is no longer supported>.
2309
2310This is not the sigil you use in front of an array name to get the
241a59d9
FC
2311last index, like C<$#array>. That's still how you get the last index
2312of an array in Perl. The two have nothing to do with each other.
84dabc03 2313
2314Deprecated in Perl 5.
2315
60cf4914 2316Removed in Perl v5.10.0.
84dabc03 2317
7f315d2e
CO
2318=item $*
2319X<$*>
2320
84dabc03 2321C<$*> was a variable that you could use to enable multiline matching.
60cf4914 2322After a deprecation cycle, its magic was removed in Perl v5.10.0.
7f315d2e 2323Using it now triggers a warning: C<$* is no longer supported>.
84dabc03 2324You should use the C</s> and C</m> regexp modifiers instead.
7f315d2e 2325
b0c22438 2326Deprecated in Perl 5.
7f315d2e 2327
60cf4914 2328Removed in Perl v5.10.0.
7f315d2e 2329
84dabc03 2330=item $[
b7a15f05 2331X<$[>
84dabc03 2332
b82b06b8
FC
2333This variable stores the index of the first element in an array, and
2334of the first character in a substring. The default is 0, but you could
2335theoretically set it to 1 to make Perl behave more like B<awk> (or Fortran)
2336when subscripting and when evaluating the index() and substr() functions.
84dabc03 2337
b82b06b8
FC
2338As of release 5 of Perl, assignment to C<$[> is treated as a compiler
2339directive, and cannot influence the behavior of any other file.
2340(That's why you can only assign compile-time constants to it.)
2341Its use is highly discouraged.
2342
60cf4914 2343Prior to Perl v5.10.0, assignment to C<$[> could be seen from outer lexical
b82b06b8
FC
2344scopes in the same file, unlike other compile-time directives (such as
2345L<strict>). Using local() on it would bind its value strictly to a lexical
2346block. Now it is always lexically scoped.
2347
60cf4914 2348As of Perl v5.16.0, it is implemented by the L<arybase> module. See
b82b06b8 2349L<arybase> for more details on its behaviour.
84dabc03 2350
6b54f8ab
FC
2351Under C<use v5.16>, or C<no feature "array_base">, C<$[> no longer has any
2352effect, and always contains 0. Assigning 0 to it is permitted, but any
2353other value will produce an error.
2354
b82b06b8
FC
2355Mnemonic: [ begins subscripts.
2356
60cf4914 2357Deprecated in Perl v5.12.0.
e1dccc0d 2358
b0c22438 2359=back
2b92dfce 2360
0b9346e6 2361=cut