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