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