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