[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-unattended/var/se3/unattended/install/linuxaux/opt/perl/lib/5.10.0/pod/ -> perlvar.pod (source)

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


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1