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