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