1*b39c5158Smillert=head1 NAME 2*b39c5158Smillert 3*b39c5158Smillertperlvar - Perl predefined variables 4*b39c5158Smillert 5*b39c5158Smillert=head1 DESCRIPTION 6*b39c5158Smillert 7*b39c5158Smillert=head2 Predefined Names 8*b39c5158Smillert 9*b39c5158SmillertThe following names have special meaning to Perl. Most 10*b39c5158Smillertpunctuation names have reasonable mnemonics, or analogs in the 11*b39c5158Smillertshells. Nevertheless, if you wish to use long variable names, 12*b39c5158Smillertyou need only say 13*b39c5158Smillert 14*b39c5158Smillert use English; 15*b39c5158Smillert 16*b39c5158Smillertat the top of your program. This will alias all the short names to the 17*b39c5158Smillertlong names in the current package. Some even have medium names, 18*b39c5158Smillertgenerally borrowed from B<awk>. 19*b39c5158Smillert 20*b39c5158SmillertIf you don't mind the performance hit, variables that depend on the 21*b39c5158Smillertcurrently selected filehandle may instead be set by calling an 22*b39c5158Smillertappropriate object method on the IO::Handle object. (Summary lines 23*b39c5158Smillertbelow for this contain the word HANDLE.) First you must say 24*b39c5158Smillert 25*b39c5158Smillert use IO::Handle; 26*b39c5158Smillert 27*b39c5158Smillertafter which you may use either 28*b39c5158Smillert 29*b39c5158Smillert method HANDLE EXPR 30*b39c5158Smillert 31*b39c5158Smillertor more safely, 32*b39c5158Smillert 33*b39c5158Smillert HANDLE->method(EXPR) 34*b39c5158Smillert 35*b39c5158SmillertEach method returns the old value of the IO::Handle attribute. 36*b39c5158SmillertThe methods each take an optional EXPR, which if supplied specifies the 37*b39c5158Smillertnew value for the IO::Handle attribute in question. If not supplied, 38*b39c5158Smillertmost methods do nothing to the current value--except for 39*b39c5158Smillertautoflush(), which will assume a 1 for you, just to be different. 40*b39c5158SmillertBecause loading in the IO::Handle class is an expensive operation, you should 41*b39c5158Smillertlearn how to use the regular built-in variables. 42*b39c5158Smillert 43*b39c5158SmillertA few of these variables are considered "read-only". This means that if 44*b39c5158Smillertyou try to assign to this variable, either directly or indirectly through 45*b39c5158Smillerta reference, you'll raise a run-time exception. 46*b39c5158Smillert 47*b39c5158SmillertThe following list is ordered by scalar variables first, then the 48*b39c5158Smillertarrays, then the hashes. 49*b39c5158Smillert 50*b39c5158Smillert=over 8 51*b39c5158Smillert 52*b39c5158Smillert=item $ARG 53*b39c5158Smillert 54*b39c5158Smillert=item $_ 55*b39c5158Smillert 56*b39c5158SmillertThe default input and pattern-searching space. The following pairs are 57*b39c5158Smillertequivalent: 58*b39c5158Smillert 59*b39c5158Smillert while (<>) {...} # equivalent only in while! 60*b39c5158Smillert while (defined($_ = <>)) {...} 61*b39c5158Smillert 62*b39c5158Smillert /^Subject:/ 63*b39c5158Smillert $_ =~ /^Subject:/ 64*b39c5158Smillert 65*b39c5158Smillert tr/a-z/A-Z/ 66*b39c5158Smillert $_ =~ tr/a-z/A-Z/ 67*b39c5158Smillert 68*b39c5158Smillert chomp 69*b39c5158Smillert chomp($_) 70*b39c5158Smillert 71*b39c5158SmillertHere are the places where Perl will assume $_ even if you 72*b39c5158Smillertdon't use it: 73*b39c5158Smillert 74*b39c5158Smillert=over 3 75*b39c5158Smillert 76*b39c5158Smillert=item * 77*b39c5158Smillert 78*b39c5158SmillertVarious unary functions, including functions like ord() and int(), as well 79*b39c5158Smillertas the all file tests (C<-f>, C<-d>) except for C<-t>, which defaults to 80*b39c5158SmillertSTDIN. 81*b39c5158Smillert 82*b39c5158Smillert=item * 83*b39c5158Smillert 84*b39c5158SmillertVarious list functions like print() and unlink(). 85*b39c5158Smillert 86*b39c5158Smillert=item * 87*b39c5158Smillert 88*b39c5158SmillertThe pattern matching operations C<m//>, C<s///>, and C<tr///> when used 89*b39c5158Smillertwithout an C<=~> operator. 90*b39c5158Smillert 91*b39c5158Smillert=item * 92*b39c5158Smillert 93*b39c5158SmillertThe default iterator variable in a C<foreach> loop if no other 94*b39c5158Smillertvariable is supplied. 95*b39c5158Smillert 96*b39c5158Smillert=item * 97*b39c5158Smillert 98*b39c5158SmillertThe implicit iterator variable in the grep() and map() functions. 99*b39c5158Smillert 100*b39c5158Smillert=item * 101*b39c5158Smillert 102*b39c5158SmillertThe default place to put an input record when a C<< <FH> >> 103*b39c5158Smillertoperation's result is tested by itself as the sole criterion of a C<while> 104*b39c5158Smillerttest. Outside a C<while> test, this will not happen. 105*b39c5158Smillert 106*b39c5158Smillert=back 107*b39c5158Smillert 108*b39c5158Smillert(Mnemonic: underline is understood in certain operations.) 109*b39c5158Smillert 110*b39c5158Smillert=back 111*b39c5158Smillert 112*b39c5158Smillert=over 8 113*b39c5158Smillert 114*b39c5158Smillert=item $<I<digits>> 115*b39c5158Smillert 116*b39c5158SmillertContains the subpattern from the corresponding set of capturing 117*b39c5158Smillertparentheses from the last pattern match, not counting patterns 118*b39c5158Smillertmatched in nested blocks that have been exited already. (Mnemonic: 119*b39c5158Smillertlike \digits.) These variables are all read-only and dynamically 120*b39c5158Smillertscoped to the current BLOCK. 121*b39c5158Smillert 122*b39c5158Smillert=item $MATCH 123*b39c5158Smillert 124*b39c5158Smillert=item $& 125*b39c5158Smillert 126*b39c5158SmillertThe string matched by the last successful pattern match (not counting 127*b39c5158Smillertany matches hidden within a BLOCK or eval() enclosed by the current 128*b39c5158SmillertBLOCK). (Mnemonic: like & in some editors.) This variable is read-only 129*b39c5158Smillertand dynamically scoped to the current BLOCK. 130*b39c5158Smillert 131*b39c5158SmillertThe use of this variable anywhere in a program imposes a considerable 132*b39c5158Smillertperformance penalty on all regular expression matches. See L<BUGS>. 133*b39c5158Smillert 134*b39c5158Smillert=item $PREMATCH 135*b39c5158Smillert 136*b39c5158Smillert=item $` 137*b39c5158Smillert 138*b39c5158SmillertThe string preceding whatever was matched by the last successful 139*b39c5158Smillertpattern match (not counting any matches hidden within a BLOCK or eval 140*b39c5158Smillertenclosed by the current BLOCK). (Mnemonic: C<`> often precedes a quoted 141*b39c5158Smillertstring.) This variable is read-only. 142*b39c5158Smillert 143*b39c5158SmillertThe use of this variable anywhere in a program imposes a considerable 144*b39c5158Smillertperformance penalty on all regular expression matches. See L<BUGS>. 145*b39c5158Smillert 146*b39c5158Smillert=item $POSTMATCH 147*b39c5158Smillert 148*b39c5158Smillert=item $' 149*b39c5158Smillert 150*b39c5158SmillertThe string following whatever was matched by the last successful 151*b39c5158Smillertpattern match (not counting any matches hidden within a BLOCK or eval() 152*b39c5158Smillertenclosed by the current BLOCK). (Mnemonic: C<'> often follows a quoted 153*b39c5158Smillertstring.) Example: 154*b39c5158Smillert 155*b39c5158Smillert $_ = 'abcdefghi'; 156*b39c5158Smillert /def/; 157*b39c5158Smillert print "$`:$&:$'\n"; # prints abc:def:ghi 158*b39c5158Smillert 159*b39c5158SmillertThis variable is read-only and dynamically scoped to the current BLOCK. 160*b39c5158Smillert 161*b39c5158SmillertThe use of this variable anywhere in a program imposes a considerable 162*b39c5158Smillertperformance penalty on all regular expression matches. See L<BUGS>. 163*b39c5158Smillert 164*b39c5158Smillert=item $LAST_PAREN_MATCH 165*b39c5158Smillert 166*b39c5158Smillert=item $+ 167*b39c5158Smillert 168*b39c5158SmillertThe last bracket matched by the last search pattern. This is useful if 169*b39c5158Smillertyou don't know which one of a set of alternative patterns matched. For 170*b39c5158Smillertexample: 171*b39c5158Smillert 172*b39c5158Smillert /Version: (.*)|Revision: (.*)/ && ($rev = $+); 173*b39c5158Smillert 174*b39c5158Smillert(Mnemonic: be positive and forward looking.) 175*b39c5158SmillertThis variable is read-only and dynamically scoped to the current BLOCK. 176*b39c5158Smillert 177*b39c5158Smillert=item @LAST_MATCH_END 178*b39c5158Smillert 179*b39c5158Smillert=item @+ 180*b39c5158Smillert 181*b39c5158SmillertThis array holds the offsets of the ends of the last successful 182*b39c5158Smillertsubmatches in the currently active dynamic scope. C<$+[0]> is 183*b39c5158Smillertthe offset into the string of the end of the entire match. This 184*b39c5158Smillertis the same value as what the C<pos> function returns when called 185*b39c5158Smillerton the variable that was matched against. The I<n>th element 186*b39c5158Smillertof this array holds the offset of the I<n>th submatch, so 187*b39c5158SmillertC<$+[1]> is the offset past where $1 ends, C<$+[2]> the offset 188*b39c5158Smillertpast where $2 ends, and so on. You can use C<$#+> to determine 189*b39c5158Smillerthow many subgroups were in the last successful match. See the 190*b39c5158Smillertexamples given for the C<@-> variable. 191*b39c5158Smillert 192*b39c5158Smillert=item $MULTILINE_MATCHING 193*b39c5158Smillert 194*b39c5158Smillert=item $* 195*b39c5158Smillert 196*b39c5158SmillertSet to a non-zero integer value to do multi-line matching within a 197*b39c5158Smillertstring, 0 (or undefined) to tell Perl that it can assume that strings 198*b39c5158Smillertcontain a single line, for the purpose of optimizing pattern matches. 199*b39c5158SmillertPattern matches on strings containing multiple newlines can produce 200*b39c5158Smillertconfusing results when C<$*> is 0 or undefined. Default is undefined. 201*b39c5158Smillert(Mnemonic: * matches multiple things.) This variable influences the 202*b39c5158Smillertinterpretation of only C<^> and C<$>. A literal newline can be searched 203*b39c5158Smillertfor even when C<$* == 0>. 204*b39c5158Smillert 205*b39c5158SmillertUse of C<$*> is deprecated in modern Perl, supplanted by 206*b39c5158Smillertthe C</s> and C</m> modifiers on pattern matching. 207*b39c5158Smillert 208*b39c5158SmillertAssigning a non-numerical value to C<$*> triggers a warning (and makes 209*b39c5158SmillertC<$*> act if C<$* == 0>), while assigning a numerical value to C<$*> 210*b39c5158Smillertmakes that an implicit C<int> is applied on the value. 211*b39c5158Smillert 212*b39c5158Smillert=item input_line_number HANDLE EXPR 213*b39c5158Smillert 214*b39c5158Smillert=item $INPUT_LINE_NUMBER 215*b39c5158Smillert 216*b39c5158Smillert=item $NR 217*b39c5158Smillert 218*b39c5158Smillert=item $. 219*b39c5158Smillert 220*b39c5158SmillertThe current input record number for the last file handle from which 221*b39c5158Smillertyou just read() (or called a C<seek> or C<tell> on). The value 222*b39c5158Smillertmay be different from the actual physical line number in the file, 223*b39c5158Smillertdepending on what notion of "line" is in effect--see C<$/> on how 224*b39c5158Smillertto change that. An explicit close on a filehandle resets the line 225*b39c5158Smillertnumber. Because C<< <> >> never does an explicit close, line 226*b39c5158Smillertnumbers increase across ARGV files (but see examples in L<perlfunc/eof>). 227*b39c5158SmillertConsider this variable read-only: setting it does not reposition 228*b39c5158Smillertthe seek pointer; you'll have to do that on your own. Localizing C<$.> 229*b39c5158Smillerthas the effect of also localizing Perl's notion of "the last read 230*b39c5158Smillertfilehandle". (Mnemonic: many programs use "." to mean the current line 231*b39c5158Smillertnumber.) 232*b39c5158Smillert 233*b39c5158Smillert=item input_record_separator HANDLE EXPR 234*b39c5158Smillert 235*b39c5158Smillert=item $INPUT_RECORD_SEPARATOR 236*b39c5158Smillert 237*b39c5158Smillert=item $RS 238*b39c5158Smillert 239*b39c5158Smillert=item $/ 240*b39c5158Smillert 241*b39c5158SmillertThe input record separator, newline by default. This 242*b39c5158Smillertinfluences Perl's idea of what a "line" is. Works like B<awk>'s RS 243*b39c5158Smillertvariable, including treating empty lines as a terminator if set to 244*b39c5158Smillertthe null string. (An empty line cannot contain any spaces 245*b39c5158Smillertor tabs.) You may set it to a multi-character string to match a 246*b39c5158Smillertmulti-character terminator, or to C<undef> to read through the end 247*b39c5158Smillertof file. Setting it to C<"\n\n"> means something slightly 248*b39c5158Smillertdifferent than setting to C<"">, if the file contains consecutive 249*b39c5158Smillertempty lines. Setting to C<""> will treat two or more consecutive 250*b39c5158Smillertempty lines as a single empty line. Setting to C<"\n\n"> will 251*b39c5158Smillertblindly assume that the next input character belongs to the next 252*b39c5158Smillertparagraph, even if it's a newline. (Mnemonic: / delimits 253*b39c5158Smillertline boundaries when quoting poetry.) 254*b39c5158Smillert 255*b39c5158Smillert undef $/; # enable "slurp" mode 256*b39c5158Smillert $_ = <FH>; # whole file now here 257*b39c5158Smillert s/\n[ \t]+/ /g; 258*b39c5158Smillert 259*b39c5158SmillertRemember: the value of C<$/> is a string, not a regex. B<awk> has to be 260*b39c5158Smillertbetter for something. :-) 261*b39c5158Smillert 262*b39c5158SmillertSetting C<$/> to a reference to an integer, scalar containing an integer, or 263*b39c5158Smillertscalar that's convertible to an integer will attempt to read records 264*b39c5158Smillertinstead of lines, with the maximum record size being the referenced 265*b39c5158Smillertinteger. So this: 266*b39c5158Smillert 267*b39c5158Smillert $/ = \32768; # or \"32768", or \$var_containing_32768 268*b39c5158Smillert open(FILE, $myfile); 269*b39c5158Smillert $_ = <FILE>; 270*b39c5158Smillert 271*b39c5158Smillertwill read a record of no more than 32768 bytes from FILE. If you're 272*b39c5158Smillertnot reading from a record-oriented file (or your OS doesn't have 273*b39c5158Smillertrecord-oriented files), then you'll likely get a full chunk of data 274*b39c5158Smillertwith every read. If a record is larger than the record size you've 275*b39c5158Smillertset, you'll get the record back in pieces. 276*b39c5158Smillert 277*b39c5158SmillertOn VMS, record reads are done with the equivalent of C<sysread>, 278*b39c5158Smillertso it's best not to mix record and non-record reads on the same 279*b39c5158Smillertfile. (This is unlikely to be a problem, because any file you'd 280*b39c5158Smillertwant to read in record mode is probably unusable in line mode.) 281*b39c5158SmillertNon-VMS systems do normal I/O, so it's safe to mix record and 282*b39c5158Smillertnon-record reads of a file. 283*b39c5158Smillert 284*b39c5158SmillertSee also L<perlport/"Newlines">. Also see C<$.>. 285*b39c5158Smillert 286*b39c5158Smillert=item autoflush HANDLE EXPR 287*b39c5158Smillert 288*b39c5158Smillert=item $OUTPUT_AUTOFLUSH 289*b39c5158Smillert 290*b39c5158Smillert=item $| 291*b39c5158Smillert 292*b39c5158SmillertIf set to nonzero, forces a flush right away and after every write 293*b39c5158Smillertor print on the currently selected output channel. Default is 0 294*b39c5158Smillert(regardless of whether the channel is really buffered by the 295*b39c5158Smillertsystem or not; C<$|> tells you only whether you've asked Perl 296*b39c5158Smillertexplicitly to flush after each write). STDOUT will 297*b39c5158Smillerttypically be line buffered if output is to the terminal and block 298*b39c5158Smillertbuffered otherwise. Setting this variable is useful primarily when 299*b39c5158Smillertyou are outputting to a pipe or socket, such as when you are running 300*b39c5158Smillerta Perl program under B<rsh> and want to see the output as it's 301*b39c5158Smillerthappening. This has no effect on input buffering. See L<perlfunc/getc> 302*b39c5158Smillertfor that. (Mnemonic: when you want your pipes to be piping hot.) 303*b39c5158Smillert 304*b39c5158Smillert=item output_field_separator HANDLE EXPR 305*b39c5158Smillert 306*b39c5158Smillert=item $OUTPUT_FIELD_SEPARATOR 307*b39c5158Smillert 308*b39c5158Smillert=item $OFS 309*b39c5158Smillert 310*b39c5158Smillert=item $, 311*b39c5158Smillert 312*b39c5158SmillertThe output field separator for the print operator. Ordinarily the 313*b39c5158Smillertprint operator simply prints out its arguments without further 314*b39c5158Smillertadornment. To get behavior more like B<awk>, set this variable as 315*b39c5158Smillertyou would set B<awk>'s OFS variable to specify what is printed 316*b39c5158Smillertbetween fields. (Mnemonic: what is printed when there is a "," in 317*b39c5158Smillertyour print statement.) 318*b39c5158Smillert 319*b39c5158Smillert=item output_record_separator HANDLE EXPR 320*b39c5158Smillert 321*b39c5158Smillert=item $OUTPUT_RECORD_SEPARATOR 322*b39c5158Smillert 323*b39c5158Smillert=item $ORS 324*b39c5158Smillert 325*b39c5158Smillert=item $\ 326*b39c5158Smillert 327*b39c5158SmillertThe output record separator for the print operator. Ordinarily the 328*b39c5158Smillertprint operator simply prints out its arguments as is, with no 329*b39c5158Smillerttrailing newline or other end-of-record string added. To get 330*b39c5158Smillertbehavior more like B<awk>, set this variable as you would set 331*b39c5158SmillertB<awk>'s ORS variable to specify what is printed at the end of the 332*b39c5158Smillertprint. (Mnemonic: you set C<$\> instead of adding "\n" at the 333*b39c5158Smillertend of the print. Also, it's just like C<$/>, but it's what you 334*b39c5158Smillertget "back" from Perl.) 335*b39c5158Smillert 336*b39c5158Smillert=item $LIST_SEPARATOR 337*b39c5158Smillert 338*b39c5158Smillert=item $" 339*b39c5158Smillert 340*b39c5158SmillertThis is like C<$,> except that it applies to array and slice values 341*b39c5158Smillertinterpolated into a double-quoted string (or similar interpreted 342*b39c5158Smillertstring). Default is a space. (Mnemonic: obvious, I think.) 343*b39c5158Smillert 344*b39c5158Smillert=item $SUBSCRIPT_SEPARATOR 345*b39c5158Smillert 346*b39c5158Smillert=item $SUBSEP 347*b39c5158Smillert 348*b39c5158Smillert=item $; 349*b39c5158Smillert 350*b39c5158SmillertThe subscript separator for multidimensional array emulation. If you 351*b39c5158Smillertrefer to a hash element as 352*b39c5158Smillert 353*b39c5158Smillert $foo{$a,$b,$c} 354*b39c5158Smillert 355*b39c5158Smillertit really means 356*b39c5158Smillert 357*b39c5158Smillert $foo{join($;, $a, $b, $c)} 358*b39c5158Smillert 359*b39c5158SmillertBut don't put 360*b39c5158Smillert 361*b39c5158Smillert @foo{$a,$b,$c} # a slice--note the @ 362*b39c5158Smillert 363*b39c5158Smillertwhich means 364*b39c5158Smillert 365*b39c5158Smillert ($foo{$a},$foo{$b},$foo{$c}) 366*b39c5158Smillert 367*b39c5158SmillertDefault is "\034", the same as SUBSEP in B<awk>. If your 368*b39c5158Smillertkeys contain binary data there might not be any safe value for C<$;>. 369*b39c5158Smillert(Mnemonic: comma (the syntactic subscript separator) is a 370*b39c5158Smillertsemi-semicolon. Yeah, I know, it's pretty lame, but C<$,> is already 371*b39c5158Smillerttaken for something more important.) 372*b39c5158Smillert 373*b39c5158SmillertConsider using "real" multidimensional arrays as described 374*b39c5158Smillertin L<perllol>. 375*b39c5158Smillert 376*b39c5158Smillert=item $OFMT 377*b39c5158Smillert 378*b39c5158Smillert=item $# 379*b39c5158Smillert 380*b39c5158SmillertThe output format for printed numbers. This variable is a half-hearted 381*b39c5158Smillertattempt to emulate B<awk>'s OFMT variable. There are times, however, 382*b39c5158Smillertwhen B<awk> and Perl have differing notions of what counts as 383*b39c5158Smillertnumeric. The initial value is "%.I<n>g", where I<n> is the value 384*b39c5158Smillertof the macro DBL_DIG from your system's F<float.h>. This is different from 385*b39c5158SmillertB<awk>'s default OFMT setting of "%.6g", so you need to set C<$#> 386*b39c5158Smillertexplicitly to get B<awk>'s value. (Mnemonic: # is the number sign.) 387*b39c5158Smillert 388*b39c5158SmillertUse of C<$#> is deprecated. 389*b39c5158Smillert 390*b39c5158Smillert=item format_page_number HANDLE EXPR 391*b39c5158Smillert 392*b39c5158Smillert=item $FORMAT_PAGE_NUMBER 393*b39c5158Smillert 394*b39c5158Smillert=item $% 395*b39c5158Smillert 396*b39c5158SmillertThe current page number of the currently selected output channel. 397*b39c5158SmillertUsed with formats. 398*b39c5158Smillert(Mnemonic: % is page number in B<nroff>.) 399*b39c5158Smillert 400*b39c5158Smillert=item format_lines_per_page HANDLE EXPR 401*b39c5158Smillert 402*b39c5158Smillert=item $FORMAT_LINES_PER_PAGE 403*b39c5158Smillert 404*b39c5158Smillert=item $= 405*b39c5158Smillert 406*b39c5158SmillertThe current page length (printable lines) of the currently selected 407*b39c5158Smillertoutput channel. Default is 60. 408*b39c5158SmillertUsed with formats. 409*b39c5158Smillert(Mnemonic: = has horizontal lines.) 410*b39c5158Smillert 411*b39c5158Smillert=item format_lines_left HANDLE EXPR 412*b39c5158Smillert 413*b39c5158Smillert=item $FORMAT_LINES_LEFT 414*b39c5158Smillert 415*b39c5158Smillert=item $- 416*b39c5158Smillert 417*b39c5158SmillertThe number of lines left on the page of the currently selected output 418*b39c5158Smillertchannel. 419*b39c5158SmillertUsed with formats. 420*b39c5158Smillert(Mnemonic: lines_on_page - lines_printed.) 421*b39c5158Smillert 422*b39c5158Smillert=item @LAST_MATCH_START 423*b39c5158Smillert 424*b39c5158Smillert=item @- 425*b39c5158Smillert 426*b39c5158Smillert$-[0] is the offset of the start of the last successful match. 427*b39c5158SmillertC<$-[>I<n>C<]> is the offset of the start of the substring matched by 428*b39c5158SmillertI<n>-th subpattern, or undef if the subpattern did not match. 429*b39c5158Smillert 430*b39c5158SmillertThus after a match against $_, $& coincides with C<substr $_, $-[0], 431*b39c5158Smillert$+[0] - $-[0]>. Similarly, C<$>I<n> coincides with C<substr $_, $-[>I<n>C<], 432*b39c5158Smillert$+[>I<n>C<] - $-[>I<n>C<]> if C<$-[>I<n>C<]> is defined, and $+ coincides with 433*b39c5158SmillertC<substr $_, $-[$#-], $+[$#-]>. One can use C<$#-> to find the last 434*b39c5158Smillertmatched subgroup in the last successful match. Contrast with 435*b39c5158SmillertC<$#+>, the number of subgroups in the regular expression. Compare 436*b39c5158Smillertwith C<@+>. 437*b39c5158Smillert 438*b39c5158SmillertThis array holds the offsets of the beginnings of the last 439*b39c5158Smillertsuccessful submatches in the currently active dynamic scope. 440*b39c5158SmillertC<$-[0]> is the offset into the string of the beginning of the 441*b39c5158Smillertentire match. The I<n>th element of this array holds the offset 442*b39c5158Smillertof the I<n>th submatch, so C<$+[1]> is the offset where $1 443*b39c5158Smillertbegins, C<$+[2]> the offset where $2 begins, and so on. 444*b39c5158SmillertYou can use C<$#-> to determine how many subgroups were in the 445*b39c5158Smillertlast successful match. Compare with the C<@+> variable. 446*b39c5158Smillert 447*b39c5158SmillertAfter a match against some variable $var: 448*b39c5158Smillert 449*b39c5158Smillert=over 5 450*b39c5158Smillert 451*b39c5158Smillert=item C<$`> is the same as C<substr($var, 0, $-[0])> 452*b39c5158Smillert 453*b39c5158Smillert=item C<$&> is the same as C<substr($var, $-[0], $+[0] - $-[0])> 454*b39c5158Smillert 455*b39c5158Smillert=item C<$'> is the same as C<substr($var, $+[0])> 456*b39c5158Smillert 457*b39c5158Smillert=item C<$1> is the same as C<substr($var, $-[1], $+[1] - $-[1])> 458*b39c5158Smillert 459*b39c5158Smillert=item C<$2> is the same as C<substr($var, $-[2], $+[2] - $-[2])> 460*b39c5158Smillert 461*b39c5158Smillert=item C<$3> is the same as C<substr $var, $-[3], $+[3] - $-[3])> 462*b39c5158Smillert 463*b39c5158Smillert=back 464*b39c5158Smillert 465*b39c5158Smillert=item format_name HANDLE EXPR 466*b39c5158Smillert 467*b39c5158Smillert=item $FORMAT_NAME 468*b39c5158Smillert 469*b39c5158Smillert=item $~ 470*b39c5158Smillert 471*b39c5158SmillertThe name of the current report format for the currently selected output 472*b39c5158Smillertchannel. Default is the name of the filehandle. (Mnemonic: brother to 473*b39c5158SmillertC<$^>.) 474*b39c5158Smillert 475*b39c5158Smillert=item format_top_name HANDLE EXPR 476*b39c5158Smillert 477*b39c5158Smillert=item $FORMAT_TOP_NAME 478*b39c5158Smillert 479*b39c5158Smillert=item $^ 480*b39c5158Smillert 481*b39c5158SmillertThe name of the current top-of-page format for the currently selected 482*b39c5158Smillertoutput channel. Default is the name of the filehandle with _TOP 483*b39c5158Smillertappended. (Mnemonic: points to top of page.) 484*b39c5158Smillert 485*b39c5158Smillert=item format_line_break_characters HANDLE EXPR 486*b39c5158Smillert 487*b39c5158Smillert=item $FORMAT_LINE_BREAK_CHARACTERS 488*b39c5158Smillert 489*b39c5158Smillert=item $: 490*b39c5158Smillert 491*b39c5158SmillertThe current set of characters after which a string may be broken to 492*b39c5158Smillertfill continuation fields (starting with ^) in a format. Default is 493*b39c5158SmillertS<" \n-">, to break on whitespace or hyphens. (Mnemonic: a "colon" in 494*b39c5158Smillertpoetry is a part of a line.) 495*b39c5158Smillert 496*b39c5158Smillert=item format_formfeed HANDLE EXPR 497*b39c5158Smillert 498*b39c5158Smillert=item $FORMAT_FORMFEED 499*b39c5158Smillert 500*b39c5158Smillert=item $^L 501*b39c5158Smillert 502*b39c5158SmillertWhat formats output as a form feed. Default is \f. 503*b39c5158Smillert 504*b39c5158Smillert=item $ACCUMULATOR 505*b39c5158Smillert 506*b39c5158Smillert=item $^A 507*b39c5158Smillert 508*b39c5158SmillertThe current value of the write() accumulator for format() lines. A format 509*b39c5158Smillertcontains formline() calls that put their result into C<$^A>. After 510*b39c5158Smillertcalling its format, write() prints out the contents of C<$^A> and empties. 511*b39c5158SmillertSo you never really see the contents of C<$^A> unless you call 512*b39c5158Smillertformline() yourself and then look at it. See L<perlform> and 513*b39c5158SmillertL<perlfunc/formline()>. 514*b39c5158Smillert 515*b39c5158Smillert=item $CHILD_ERROR 516*b39c5158Smillert 517*b39c5158Smillert=item $? 518*b39c5158Smillert 519*b39c5158SmillertThe status returned by the last pipe close, backtick (C<``>) command, 520*b39c5158Smillertsuccessful call to wait() or waitpid(), or from the system() 521*b39c5158Smillertoperator. This is just the 16-bit status word returned by the 522*b39c5158Smillertwait() system call (or else is made up to look like it). Thus, the 523*b39c5158Smillertexit value of the subprocess is really (C<<< $? >> 8 >>>), and 524*b39c5158SmillertC<$? & 127> gives which signal, if any, the process died from, and 525*b39c5158SmillertC<$? & 128> reports whether there was a core dump. (Mnemonic: 526*b39c5158Smillertsimilar to B<sh> and B<ksh>.) 527*b39c5158Smillert 528*b39c5158SmillertAdditionally, if the C<h_errno> variable is supported in C, its value 529*b39c5158Smillertis returned via $? if any C<gethost*()> function fails. 530*b39c5158Smillert 531*b39c5158SmillertIf you have installed a signal handler for C<SIGCHLD>, the 532*b39c5158Smillertvalue of C<$?> will usually be wrong outside that handler. 533*b39c5158Smillert 534*b39c5158SmillertInside an C<END> subroutine C<$?> contains the value that is going to be 535*b39c5158Smillertgiven to C<exit()>. You can modify C<$?> in an C<END> subroutine to 536*b39c5158Smillertchange the exit status of your program. For example: 537*b39c5158Smillert 538*b39c5158Smillert END { 539*b39c5158Smillert $? = 1 if $? == 255; # die would make it 255 540*b39c5158Smillert } 541*b39c5158Smillert 542*b39c5158SmillertUnder VMS, the pragma C<use vmsish 'status'> makes C<$?> reflect the 543*b39c5158Smillertactual VMS exit status, instead of the default emulation of POSIX 544*b39c5158Smillertstatus. 545*b39c5158Smillert 546*b39c5158SmillertAlso see L<Error Indicators>. 547*b39c5158Smillert 548*b39c5158Smillert=item $OS_ERROR 549*b39c5158Smillert 550*b39c5158Smillert=item $ERRNO 551*b39c5158Smillert 552*b39c5158Smillert=item $! 553*b39c5158Smillert 554*b39c5158SmillertIf used numerically, yields the current value of the C C<errno> 555*b39c5158Smillertvariable, with all the usual caveats. (This means that you shouldn't 556*b39c5158Smillertdepend on the value of C<$!> to be anything in particular unless 557*b39c5158Smillertyou've gotten a specific error return indicating a system error.) 558*b39c5158SmillertIf used an a string, yields the corresponding system error string. 559*b39c5158SmillertYou can assign a number to C<$!> to set I<errno> if, for instance, 560*b39c5158Smillertyou want C<"$!"> to return the string for error I<n>, or you want 561*b39c5158Smillertto set the exit value for the die() operator. (Mnemonic: What just 562*b39c5158Smillertwent bang?) 563*b39c5158Smillert 564*b39c5158SmillertAlso see L<Error Indicators>. 565*b39c5158Smillert 566*b39c5158Smillert=item $EXTENDED_OS_ERROR 567*b39c5158Smillert 568*b39c5158Smillert=item $^E 569*b39c5158Smillert 570*b39c5158SmillertError information specific to the current operating system. At 571*b39c5158Smillertthe moment, this differs from C<$!> under only VMS, OS/2, and Win32 572*b39c5158Smillert(and for MacPerl). On all other platforms, C<$^E> is always just 573*b39c5158Smillertthe same as C<$!>. 574*b39c5158Smillert 575*b39c5158SmillertUnder VMS, C<$^E> provides the VMS status value from the last 576*b39c5158Smillertsystem error. This is more specific information about the last 577*b39c5158Smillertsystem error than that provided by C<$!>. This is particularly 578*b39c5158Smillertimportant when C<$!> is set to B<EVMSERR>. 579*b39c5158Smillert 580*b39c5158SmillertUnder OS/2, C<$^E> is set to the error code of the last call to 581*b39c5158SmillertOS/2 API either via CRT, or directly from perl. 582*b39c5158Smillert 583*b39c5158SmillertUnder Win32, C<$^E> always returns the last error information 584*b39c5158Smillertreported by the Win32 call C<GetLastError()> which describes 585*b39c5158Smillertthe last error from within the Win32 API. Most Win32-specific 586*b39c5158Smillertcode will report errors via C<$^E>. ANSI C and Unix-like calls 587*b39c5158Smillertset C<errno> and so most portable Perl code will report errors 588*b39c5158Smillertvia C<$!>. 589*b39c5158Smillert 590*b39c5158SmillertCaveats mentioned in the description of C<$!> generally apply to 591*b39c5158SmillertC<$^E>, also. (Mnemonic: Extra error explanation.) 592*b39c5158Smillert 593*b39c5158SmillertAlso see L<Error Indicators>. 594*b39c5158Smillert 595*b39c5158Smillert=item $EVAL_ERROR 596*b39c5158Smillert 597*b39c5158Smillert=item $@ 598*b39c5158Smillert 599*b39c5158SmillertThe Perl syntax error message from the last eval() operator. If null, the 600*b39c5158Smillertlast eval() parsed and executed correctly (although the operations you 601*b39c5158Smillertinvoked may have failed in the normal fashion). (Mnemonic: Where was 602*b39c5158Smillertthe syntax error "at"?) 603*b39c5158Smillert 604*b39c5158SmillertWarning messages are not collected in this variable. You can, 605*b39c5158Smillerthowever, set up a routine to process warnings by setting C<$SIG{__WARN__}> 606*b39c5158Smillertas described below. 607*b39c5158Smillert 608*b39c5158SmillertAlso see L<Error Indicators>. 609*b39c5158Smillert 610*b39c5158Smillert=item $PROCESS_ID 611*b39c5158Smillert 612*b39c5158Smillert=item $PID 613*b39c5158Smillert 614*b39c5158Smillert=item $$ 615*b39c5158Smillert 616*b39c5158SmillertThe process number of the Perl running this script. You should 617*b39c5158Smillertconsider this variable read-only, although it will be altered 618*b39c5158Smillertacross fork() calls. (Mnemonic: same as shells.) 619*b39c5158Smillert 620*b39c5158Smillert=item $REAL_USER_ID 621*b39c5158Smillert 622*b39c5158Smillert=item $UID 623*b39c5158Smillert 624*b39c5158Smillert=item $< 625*b39c5158Smillert 626*b39c5158SmillertThe real uid of this process. (Mnemonic: it's the uid you came I<from>, 627*b39c5158Smillertif you're running setuid.) 628*b39c5158Smillert 629*b39c5158Smillert=item $EFFECTIVE_USER_ID 630*b39c5158Smillert 631*b39c5158Smillert=item $EUID 632*b39c5158Smillert 633*b39c5158Smillert=item $> 634*b39c5158Smillert 635*b39c5158SmillertThe effective uid of this process. Example: 636*b39c5158Smillert 637*b39c5158Smillert $< = $>; # set real to effective uid 638*b39c5158Smillert ($<,$>) = ($>,$<); # swap real and effective uid 639*b39c5158Smillert 640*b39c5158Smillert(Mnemonic: it's the uid you went I<to>, if you're running setuid.) 641*b39c5158SmillertC<< $< >> and C<< $> >> can be swapped only on machines 642*b39c5158Smillertsupporting setreuid(). 643*b39c5158Smillert 644*b39c5158Smillert=item $REAL_GROUP_ID 645*b39c5158Smillert 646*b39c5158Smillert=item $GID 647*b39c5158Smillert 648*b39c5158Smillert=item $( 649*b39c5158Smillert 650*b39c5158SmillertThe real gid of this process. If you are on a machine that supports 651*b39c5158Smillertmembership in multiple groups simultaneously, gives a space separated 652*b39c5158Smillertlist of groups you are in. The first number is the one returned by 653*b39c5158Smillertgetgid(), and the subsequent ones by getgroups(), one of which may be 654*b39c5158Smillertthe same as the first number. 655*b39c5158Smillert 656*b39c5158SmillertHowever, a value assigned to C<$(> must be a single number used to 657*b39c5158Smillertset the real gid. So the value given by C<$(> should I<not> be assigned 658*b39c5158Smillertback to C<$(> without being forced numeric, such as by adding zero. 659*b39c5158Smillert 660*b39c5158Smillert(Mnemonic: parentheses are used to I<group> things. The real gid is the 661*b39c5158Smillertgroup you I<left>, if you're running setgid.) 662*b39c5158Smillert 663*b39c5158Smillert=item $EFFECTIVE_GROUP_ID 664*b39c5158Smillert 665*b39c5158Smillert=item $EGID 666*b39c5158Smillert 667*b39c5158Smillert=item $) 668*b39c5158Smillert 669*b39c5158SmillertThe effective gid of this process. If you are on a machine that 670*b39c5158Smillertsupports membership in multiple groups simultaneously, gives a space 671*b39c5158Smillertseparated list of groups you are in. The first number is the one 672*b39c5158Smillertreturned by getegid(), and the subsequent ones by getgroups(), one of 673*b39c5158Smillertwhich may be the same as the first number. 674*b39c5158Smillert 675*b39c5158SmillertSimilarly, a value assigned to C<$)> must also be a space-separated 676*b39c5158Smillertlist of numbers. The first number sets the effective gid, and 677*b39c5158Smillertthe rest (if any) are passed to setgroups(). To get the effect of an 678*b39c5158Smillertempty list for setgroups(), just repeat the new effective gid; that is, 679*b39c5158Smillertto force an effective gid of 5 and an effectively empty setgroups() 680*b39c5158Smillertlist, say C< $) = "5 5" >. 681*b39c5158Smillert 682*b39c5158Smillert(Mnemonic: parentheses are used to I<group> things. The effective gid 683*b39c5158Smillertis the group that's I<right> for you, if you're running setgid.) 684*b39c5158Smillert 685*b39c5158SmillertC<< $< >>, C<< $> >>, C<$(> and C<$)> can be set only on 686*b39c5158Smillertmachines that support the corresponding I<set[re][ug]id()> routine. C<$(> 687*b39c5158Smillertand C<$)> can be swapped only on machines supporting setregid(). 688*b39c5158Smillert 689*b39c5158Smillert=item $PROGRAM_NAME 690*b39c5158Smillert 691*b39c5158Smillert=item $0 692*b39c5158Smillert 693*b39c5158SmillertContains the name of the program being executed. On some operating 694*b39c5158Smillertsystems assigning to C<$0> modifies the argument area that the B<ps> 695*b39c5158Smillertprogram sees. This is more useful as a way of indicating the current 696*b39c5158Smillertprogram state than it is for hiding the program you're running. 697*b39c5158Smillert(Mnemonic: same as B<sh> and B<ksh>.) 698*b39c5158Smillert 699*b39c5158SmillertNote for BSD users: setting C<$0> does not completely remove "perl" 700*b39c5158Smillertfrom the ps(1) output. For example, setting C<$0> to C<"foobar"> will 701*b39c5158Smillertresult in C<"perl: foobar (perl)">. This is an operating system 702*b39c5158Smillertfeature. 703*b39c5158Smillert 704*b39c5158Smillert=item $[ 705*b39c5158Smillert 706*b39c5158SmillertThe index of the first element in an array, and of the first character 707*b39c5158Smillertin a substring. Default is 0, but you could theoretically set it 708*b39c5158Smillertto 1 to make Perl behave more like B<awk> (or Fortran) when 709*b39c5158Smillertsubscripting and when evaluating the index() and substr() functions. 710*b39c5158Smillert(Mnemonic: [ begins subscripts.) 711*b39c5158Smillert 712*b39c5158SmillertAs of release 5 of Perl, assignment to C<$[> is treated as a compiler 713*b39c5158Smillertdirective, and cannot influence the behavior of any other file. 714*b39c5158SmillertIts use is highly discouraged. 715*b39c5158Smillert 716*b39c5158Smillert=item $] 717*b39c5158Smillert 718*b39c5158SmillertThe version + patchlevel / 1000 of the Perl interpreter. This variable 719*b39c5158Smillertcan be used to determine whether the Perl interpreter executing a 720*b39c5158Smillertscript is in the right range of versions. (Mnemonic: Is this version 721*b39c5158Smillertof perl in the right bracket?) Example: 722*b39c5158Smillert 723*b39c5158Smillert warn "No checksumming!\n" if $] < 3.019; 724*b39c5158Smillert 725*b39c5158SmillertSee also the documentation of C<use VERSION> and C<require VERSION> 726*b39c5158Smillertfor a convenient way to fail if the running Perl interpreter is too old. 727*b39c5158Smillert 728*b39c5158SmillertThe use of this variable is deprecated. The floating point representation 729*b39c5158Smillertcan sometimes lead to inaccurate numeric comparisons. See C<$^V> for a 730*b39c5158Smillertmore modern representation of the Perl version that allows accurate string 731*b39c5158Smillertcomparisons. 732*b39c5158Smillert 733*b39c5158Smillert=item $COMPILING 734*b39c5158Smillert 735*b39c5158Smillert=item $^C 736*b39c5158Smillert 737*b39c5158SmillertThe current value of the flag associated with the B<-c> switch. 738*b39c5158SmillertMainly of use with B<-MO=...> to allow code to alter its behavior 739*b39c5158Smillertwhen being compiled, such as for example to AUTOLOAD at compile 740*b39c5158Smillerttime rather than normal, deferred loading. See L<perlcc>. Setting 741*b39c5158SmillertC<$^C = 1> is similar to calling C<B::minus_c>. 742*b39c5158Smillert 743*b39c5158Smillert=item $DEBUGGING 744*b39c5158Smillert 745*b39c5158Smillert=item $^D 746*b39c5158Smillert 747*b39c5158SmillertThe current value of the debugging flags. (Mnemonic: value of B<-D> 748*b39c5158Smillertswitch.) 749*b39c5158Smillert 750*b39c5158Smillert=item $SYSTEM_FD_MAX 751*b39c5158Smillert 752*b39c5158Smillert=item $^F 753*b39c5158Smillert 754*b39c5158SmillertThe maximum system file descriptor, ordinarily 2. System file 755*b39c5158Smillertdescriptors are passed to exec()ed processes, while higher file 756*b39c5158Smillertdescriptors are not. Also, during an open(), system file descriptors are 757*b39c5158Smillertpreserved even if the open() fails. (Ordinary file descriptors are 758*b39c5158Smillertclosed before the open() is attempted.) The close-on-exec 759*b39c5158Smillertstatus of a file descriptor will be decided according to the value of 760*b39c5158SmillertC<$^F> when the corresponding file, pipe, or socket was opened, not the 761*b39c5158Smillerttime of the exec(). 762*b39c5158Smillert 763*b39c5158Smillert=item $^H 764*b39c5158Smillert 765*b39c5158SmillertWARNING: This variable is strictly for internal use only. Its availability, 766*b39c5158Smillertbehavior, and contents are subject to change without notice. 767*b39c5158Smillert 768*b39c5158SmillertThis variable contains compile-time hints for the Perl interpreter. At the 769*b39c5158Smillertend of compilation of a BLOCK the value of this variable is restored to the 770*b39c5158Smillertvalue when the interpreter started to compile the BLOCK. 771*b39c5158Smillert 772*b39c5158SmillertWhen perl begins to parse any block construct that provides a lexical scope 773*b39c5158Smillert(e.g., eval body, required file, subroutine body, loop body, or conditional 774*b39c5158Smillertblock), the existing value of $^H is saved, but its value is left unchanged. 775*b39c5158SmillertWhen the compilation of the block is completed, it regains the saved value. 776*b39c5158SmillertBetween the points where its value is saved and restored, code that 777*b39c5158Smillertexecutes within BEGIN blocks is free to change the value of $^H. 778*b39c5158Smillert 779*b39c5158SmillertThis behavior provides the semantic of lexical scoping, and is used in, 780*b39c5158Smillertfor instance, the C<use strict> pragma. 781*b39c5158Smillert 782*b39c5158SmillertThe contents should be an integer; different bits of it are used for 783*b39c5158Smillertdifferent pragmatic flags. Here's an example: 784*b39c5158Smillert 785*b39c5158Smillert sub add_100 { $^H |= 0x100 } 786*b39c5158Smillert 787*b39c5158Smillert sub foo { 788*b39c5158Smillert BEGIN { add_100() } 789*b39c5158Smillert bar->baz($boon); 790*b39c5158Smillert } 791*b39c5158Smillert 792*b39c5158SmillertConsider what happens during execution of the BEGIN block. At this point 793*b39c5158Smillertthe BEGIN block has already been compiled, but the body of foo() is still 794*b39c5158Smillertbeing compiled. The new value of $^H will therefore be visible only while 795*b39c5158Smillertthe body of foo() is being compiled. 796*b39c5158Smillert 797*b39c5158SmillertSubstitution of the above BEGIN block with: 798*b39c5158Smillert 799*b39c5158Smillert BEGIN { require strict; strict->import('vars') } 800*b39c5158Smillert 801*b39c5158Smillertdemonstrates how C<use strict 'vars'> is implemented. Here's a conditional 802*b39c5158Smillertversion of the same lexical pragma: 803*b39c5158Smillert 804*b39c5158Smillert BEGIN { require strict; strict->import('vars') if $condition } 805*b39c5158Smillert 806*b39c5158Smillert=item %^H 807*b39c5158Smillert 808*b39c5158SmillertWARNING: This variable is strictly for internal use only. Its availability, 809*b39c5158Smillertbehavior, and contents are subject to change without notice. 810*b39c5158Smillert 811*b39c5158SmillertThe %^H hash provides the same scoping semantic as $^H. This makes it 812*b39c5158Smillertuseful for implementation of lexically scoped pragmas. 813*b39c5158Smillert 814*b39c5158Smillert=item $INPLACE_EDIT 815*b39c5158Smillert 816*b39c5158Smillert=item $^I 817*b39c5158Smillert 818*b39c5158SmillertThe current value of the inplace-edit extension. Use C<undef> to disable 819*b39c5158Smillertinplace editing. (Mnemonic: value of B<-i> switch.) 820*b39c5158Smillert 821*b39c5158Smillert=item $^M 822*b39c5158Smillert 823*b39c5158SmillertBy default, running out of memory is an untrappable, fatal error. 824*b39c5158SmillertHowever, if suitably built, Perl can use the contents of C<$^M> 825*b39c5158Smillertas an emergency memory pool after die()ing. Suppose that your Perl 826*b39c5158Smillertwere compiled with -DPERL_EMERGENCY_SBRK and used Perl's malloc. 827*b39c5158SmillertThen 828*b39c5158Smillert 829*b39c5158Smillert $^M = 'a' x (1 << 16); 830*b39c5158Smillert 831*b39c5158Smillertwould allocate a 64K buffer for use in an emergency. See the 832*b39c5158SmillertF<INSTALL> file in the Perl distribution for information on how to 833*b39c5158Smillertenable this option. To discourage casual use of this advanced 834*b39c5158Smillertfeature, there is no L<English|English> long name for this variable. 835*b39c5158Smillert 836*b39c5158Smillert=item $OSNAME 837*b39c5158Smillert 838*b39c5158Smillert=item $^O 839*b39c5158Smillert 840*b39c5158SmillertThe name of the operating system under which this copy of Perl was 841*b39c5158Smillertbuilt, as determined during the configuration process. The value 842*b39c5158Smillertis identical to C<$Config{'osname'}>. See also L<Config> and the 843*b39c5158SmillertB<-V> command-line switch documented in L<perlrun>. 844*b39c5158Smillert 845*b39c5158Smillert=item $PERLDB 846*b39c5158Smillert 847*b39c5158Smillert=item $^P 848*b39c5158Smillert 849*b39c5158SmillertThe internal variable for debugging support. The meanings of the 850*b39c5158Smillertvarious bits are subject to change, but currently indicate: 851*b39c5158Smillert 852*b39c5158Smillert=over 6 853*b39c5158Smillert 854*b39c5158Smillert=item 0x01 855*b39c5158Smillert 856*b39c5158SmillertDebug subroutine enter/exit. 857*b39c5158Smillert 858*b39c5158Smillert=item 0x02 859*b39c5158Smillert 860*b39c5158SmillertLine-by-line debugging. 861*b39c5158Smillert 862*b39c5158Smillert=item 0x04 863*b39c5158Smillert 864*b39c5158SmillertSwitch off optimizations. 865*b39c5158Smillert 866*b39c5158Smillert=item 0x08 867*b39c5158Smillert 868*b39c5158SmillertPreserve more data for future interactive inspections. 869*b39c5158Smillert 870*b39c5158Smillert=item 0x10 871*b39c5158Smillert 872*b39c5158SmillertKeep info about source lines on which a subroutine is defined. 873*b39c5158Smillert 874*b39c5158Smillert=item 0x20 875*b39c5158Smillert 876*b39c5158SmillertStart with single-step on. 877*b39c5158Smillert 878*b39c5158Smillert=item 0x40 879*b39c5158Smillert 880*b39c5158SmillertUse subroutine address instead of name when reporting. 881*b39c5158Smillert 882*b39c5158Smillert=item 0x80 883*b39c5158Smillert 884*b39c5158SmillertReport C<goto &subroutine> as well. 885*b39c5158Smillert 886*b39c5158Smillert=item 0x100 887*b39c5158Smillert 888*b39c5158SmillertProvide informative "file" names for evals based on the place they were compiled. 889*b39c5158Smillert 890*b39c5158Smillert=item 0x200 891*b39c5158Smillert 892*b39c5158SmillertProvide informative names to anonymous subroutines based on the place they 893*b39c5158Smillertwere compiled. 894*b39c5158Smillert 895*b39c5158Smillert=back 896*b39c5158Smillert 897*b39c5158SmillertSome bits may be relevant at compile-time only, some at 898*b39c5158Smillertrun-time only. This is a new mechanism and the details may change. 899*b39c5158Smillert 900*b39c5158Smillert=item $LAST_REGEXP_CODE_RESULT 901*b39c5158Smillert 902*b39c5158Smillert=item $^R 903*b39c5158Smillert 904*b39c5158SmillertThe result of evaluation of the last successful C<(?{ code })> 905*b39c5158Smillertregular expression assertion (see L<perlre>). May be written to. 906*b39c5158Smillert 907*b39c5158Smillert=item $EXCEPTIONS_BEING_CAUGHT 908*b39c5158Smillert 909*b39c5158Smillert=item $^S 910*b39c5158Smillert 911*b39c5158SmillertCurrent state of the interpreter. Undefined if parsing of the current 912*b39c5158Smillertmodule/eval is not finished (may happen in $SIG{__DIE__} and 913*b39c5158Smillert$SIG{__WARN__} handlers). True if inside an eval(), otherwise false. 914*b39c5158Smillert 915*b39c5158Smillert=item $BASETIME 916*b39c5158Smillert 917*b39c5158Smillert=item $^T 918*b39c5158Smillert 919*b39c5158SmillertThe time at which the program began running, in seconds since the 920*b39c5158Smillertepoch (beginning of 1970). The values returned by the B<-M>, B<-A>, 921*b39c5158Smillertand B<-C> filetests are based on this value. 922*b39c5158Smillert 923*b39c5158Smillert=item $PERL_VERSION 924*b39c5158Smillert 925*b39c5158Smillert=item $^V 926*b39c5158Smillert 927*b39c5158SmillertThe revision, version, and subversion of the Perl interpreter, represented 928*b39c5158Smillertas a string composed of characters with those ordinals. Thus in Perl v5.6.0 929*b39c5158Smillertit equals C<chr(5) . chr(6) . chr(0)> and will return true for 930*b39c5158SmillertC<$^V eq v5.6.0>. Note that the characters in this string value can 931*b39c5158Smillertpotentially be in Unicode range. 932*b39c5158Smillert 933*b39c5158SmillertThis can be used to determine whether the Perl interpreter executing a 934*b39c5158Smillertscript is in the right range of versions. (Mnemonic: use ^V for Version 935*b39c5158SmillertControl.) Example: 936*b39c5158Smillert 937*b39c5158Smillert warn "No \"our\" declarations!\n" if $^V and $^V lt v5.6.0; 938*b39c5158Smillert 939*b39c5158SmillertSee the documentation of C<use VERSION> and C<require VERSION> 940*b39c5158Smillertfor a convenient way to fail if the running Perl interpreter is too old. 941*b39c5158Smillert 942*b39c5158SmillertSee also C<$]> for an older representation of the Perl version. 943*b39c5158Smillert 944*b39c5158Smillert=item $WARNING 945*b39c5158Smillert 946*b39c5158Smillert=item $^W 947*b39c5158Smillert 948*b39c5158SmillertThe current value of the warning switch, initially true if B<-w> 949*b39c5158Smillertwas used, false otherwise, but directly modifiable. (Mnemonic: 950*b39c5158Smillertrelated to the B<-w> switch.) See also L<warnings>. 951*b39c5158Smillert 952*b39c5158Smillert=item ${^WARNING_BITS} 953*b39c5158Smillert 954*b39c5158SmillertThe current set of warning checks enabled by the C<use warnings> pragma. 955*b39c5158SmillertSee the documentation of C<warnings> for more details. 956*b39c5158Smillert 957*b39c5158Smillert=item ${^WIDE_SYSTEM_CALLS} 958*b39c5158Smillert 959*b39c5158SmillertGlobal flag that enables system calls made by Perl to use wide character 960*b39c5158SmillertAPIs native to the system, if available. This is currently only implemented 961*b39c5158Smillerton the Windows platform. 962*b39c5158Smillert 963*b39c5158SmillertThis can also be enabled from the command line using the C<-C> switch. 964*b39c5158Smillert 965*b39c5158SmillertThe initial value is typically C<0> for compatibility with Perl versions 966*b39c5158Smillertearlier than 5.6, but may be automatically set to C<1> by Perl if the system 967*b39c5158Smillertprovides a user-settable default (e.g., C<$ENV{LC_CTYPE}>). 968*b39c5158Smillert 969*b39c5158SmillertThe C<bytes> pragma always overrides the effect of this flag in the current 970*b39c5158Smillertlexical scope. See L<bytes>. 971*b39c5158Smillert 972*b39c5158Smillert=item $EXECUTABLE_NAME 973*b39c5158Smillert 974*b39c5158Smillert=item $^X 975*b39c5158Smillert 976*b39c5158SmillertThe name that the Perl binary itself was executed as, from C's C<argv[0]>. 977*b39c5158SmillertThis may not be a full pathname, nor even necessarily in your path. 978*b39c5158Smillert 979*b39c5158Smillert=item $ARGV 980*b39c5158Smillert 981*b39c5158Smillertcontains the name of the current file when reading from <>. 982*b39c5158Smillert 983*b39c5158Smillert=item @ARGV 984*b39c5158Smillert 985*b39c5158SmillertThe array @ARGV contains the command-line arguments intended for 986*b39c5158Smillertthe script. C<$#ARGV> is generally the number of arguments minus 987*b39c5158Smillertone, because C<$ARGV[0]> is the first argument, I<not> the program's 988*b39c5158Smillertcommand name itself. See C<$0> for the command name. 989*b39c5158Smillert 990*b39c5158Smillert=item @INC 991*b39c5158Smillert 992*b39c5158SmillertThe array @INC contains the list of places that the C<do EXPR>, 993*b39c5158SmillertC<require>, or C<use> constructs look for their library files. It 994*b39c5158Smillertinitially consists of the arguments to any B<-I> command-line 995*b39c5158Smillertswitches, followed by the default Perl library, probably 996*b39c5158SmillertF</usr/local/lib/perl>, followed by ".", to represent the current 997*b39c5158Smillertdirectory. If you need to modify this at runtime, you should use 998*b39c5158Smillertthe C<use lib> pragma to get the machine-dependent library properly 999*b39c5158Smillertloaded also: 1000*b39c5158Smillert 1001*b39c5158Smillert use lib '/mypath/libdir/'; 1002*b39c5158Smillert use SomeMod; 1003*b39c5158Smillert 1004*b39c5158Smillert=item @_ 1005*b39c5158Smillert 1006*b39c5158SmillertWithin a subroutine the array @_ contains the parameters passed to that 1007*b39c5158Smillertsubroutine. See L<perlsub>. 1008*b39c5158Smillert 1009*b39c5158Smillert=item %INC 1010*b39c5158Smillert 1011*b39c5158SmillertThe hash %INC contains entries for each filename included via the 1012*b39c5158SmillertC<do>, C<require>, or C<use> operators. The key is the filename 1013*b39c5158Smillertyou specified (with module names converted to pathnames), and the 1014*b39c5158Smillertvalue is the location of the file found. The C<require> 1015*b39c5158Smillertoperator uses this hash to determine whether a particular file has 1016*b39c5158Smillertalready been included. 1017*b39c5158Smillert 1018*b39c5158Smillert=item %ENV 1019*b39c5158Smillert 1020*b39c5158Smillert=item $ENV{expr} 1021*b39c5158Smillert 1022*b39c5158SmillertThe hash %ENV contains your current environment. Setting a 1023*b39c5158Smillertvalue in C<ENV> changes the environment for any child processes 1024*b39c5158Smillertyou subsequently fork() off. 1025*b39c5158Smillert 1026*b39c5158Smillert=item %SIG 1027*b39c5158Smillert 1028*b39c5158Smillert=item $SIG{expr} 1029*b39c5158Smillert 1030*b39c5158SmillertThe hash %SIG contains signal handlers for signals. For example: 1031*b39c5158Smillert 1032*b39c5158Smillert sub handler { # 1st argument is signal name 1033*b39c5158Smillert my($sig) = @_; 1034*b39c5158Smillert print "Caught a SIG$sig--shutting down\n"; 1035*b39c5158Smillert close(LOG); 1036*b39c5158Smillert exit(0); 1037*b39c5158Smillert } 1038*b39c5158Smillert 1039*b39c5158Smillert $SIG{'INT'} = \&handler; 1040*b39c5158Smillert $SIG{'QUIT'} = \&handler; 1041*b39c5158Smillert ... 1042*b39c5158Smillert $SIG{'INT'} = 'DEFAULT'; # restore default action 1043*b39c5158Smillert $SIG{'QUIT'} = 'IGNORE'; # ignore SIGQUIT 1044*b39c5158Smillert 1045*b39c5158SmillertUsing a value of C<'IGNORE'> usually has the effect of ignoring the 1046*b39c5158Smillertsignal, except for the C<CHLD> signal. See L<perlipc> for more about 1047*b39c5158Smillertthis special case. 1048*b39c5158Smillert 1049*b39c5158SmillertHere are some other examples: 1050*b39c5158Smillert 1051*b39c5158Smillert $SIG{"PIPE"} = "Plumber"; # assumes main::Plumber (not recommended) 1052*b39c5158Smillert $SIG{"PIPE"} = \&Plumber; # just fine; assume current Plumber 1053*b39c5158Smillert $SIG{"PIPE"} = *Plumber; # somewhat esoteric 1054*b39c5158Smillert $SIG{"PIPE"} = Plumber(); # oops, what did Plumber() return?? 1055*b39c5158Smillert 1056*b39c5158SmillertBe sure not to use a bareword as the name of a signal handler, 1057*b39c5158Smillertlest you inadvertently call it. 1058*b39c5158Smillert 1059*b39c5158SmillertIf your system has the sigaction() function then signal handlers are 1060*b39c5158Smillertinstalled using it. This means you get reliable signal handling. If 1061*b39c5158Smillertyour system has the SA_RESTART flag it is used when signals handlers are 1062*b39c5158Smillertinstalled. This means that system calls for which restarting is supported 1063*b39c5158Smillertcontinue rather than returning when a signal arrives. If you want your 1064*b39c5158Smillertsystem calls to be interrupted by signal delivery then do something like 1065*b39c5158Smillertthis: 1066*b39c5158Smillert 1067*b39c5158Smillert use POSIX ':signal_h'; 1068*b39c5158Smillert 1069*b39c5158Smillert my $alarm = 0; 1070*b39c5158Smillert sigaction SIGALRM, new POSIX::SigAction sub { $alarm = 1 } 1071*b39c5158Smillert or die "Error setting SIGALRM handler: $!\n"; 1072*b39c5158Smillert 1073*b39c5158SmillertSee L<POSIX>. 1074*b39c5158Smillert 1075*b39c5158SmillertCertain internal hooks can be also set using the %SIG hash. The 1076*b39c5158Smillertroutine indicated by C<$SIG{__WARN__}> is called when a warning message is 1077*b39c5158Smillertabout to be printed. The warning message is passed as the first 1078*b39c5158Smillertargument. The presence of a __WARN__ hook causes the ordinary printing 1079*b39c5158Smillertof warnings to STDERR to be suppressed. You can use this to save warnings 1080*b39c5158Smillertin a variable, or turn warnings into fatal errors, like this: 1081*b39c5158Smillert 1082*b39c5158Smillert local $SIG{__WARN__} = sub { die $_[0] }; 1083*b39c5158Smillert eval $proggie; 1084*b39c5158Smillert 1085*b39c5158SmillertThe routine indicated by C<$SIG{__DIE__}> is called when a fatal exception 1086*b39c5158Smillertis about to be thrown. The error message is passed as the first 1087*b39c5158Smillertargument. When a __DIE__ hook routine returns, the exception 1088*b39c5158Smillertprocessing continues as it would have in the absence of the hook, 1089*b39c5158Smillertunless the hook routine itself exits via a C<goto>, a loop exit, or a die(). 1090*b39c5158SmillertThe C<__DIE__> handler is explicitly disabled during the call, so that you 1091*b39c5158Smillertcan die from a C<__DIE__> handler. Similarly for C<__WARN__>. 1092*b39c5158Smillert 1093*b39c5158SmillertDue to an implementation glitch, the C<$SIG{__DIE__}> hook is called 1094*b39c5158Smillerteven inside an eval(). Do not use this to rewrite a pending exception 1095*b39c5158Smillertin C<$@>, or as a bizarre substitute for overriding CORE::GLOBAL::die(). 1096*b39c5158SmillertThis strange action at a distance may be fixed in a future release 1097*b39c5158Smillertso that C<$SIG{__DIE__}> is only called if your program is about 1098*b39c5158Smillertto exit, as was the original intent. Any other use is deprecated. 1099*b39c5158Smillert 1100*b39c5158SmillertC<__DIE__>/C<__WARN__> handlers are very special in one respect: 1101*b39c5158Smillertthey may be called to report (probable) errors found by the parser. 1102*b39c5158SmillertIn such a case the parser may be in inconsistent state, so any 1103*b39c5158Smillertattempt to evaluate Perl code from such a handler will probably 1104*b39c5158Smillertresult in a segfault. This means that warnings or errors that 1105*b39c5158Smillertresult from parsing Perl should be used with extreme caution, like 1106*b39c5158Smillertthis: 1107*b39c5158Smillert 1108*b39c5158Smillert require Carp if defined $^S; 1109*b39c5158Smillert Carp::confess("Something wrong") if defined &Carp::confess; 1110*b39c5158Smillert die "Something wrong, but could not load Carp to give backtrace... 1111*b39c5158Smillert To see backtrace try starting Perl with -MCarp switch"; 1112*b39c5158Smillert 1113*b39c5158SmillertHere the first line will load Carp I<unless> it is the parser who 1114*b39c5158Smillertcalled the handler. The second line will print backtrace and die if 1115*b39c5158SmillertCarp was available. The third line will be executed only if Carp was 1116*b39c5158Smillertnot available. 1117*b39c5158Smillert 1118*b39c5158SmillertSee L<perlfunc/die>, L<perlfunc/warn>, L<perlfunc/eval>, and 1119*b39c5158SmillertL<warnings> for additional information. 1120*b39c5158Smillert 1121*b39c5158Smillert=back 1122*b39c5158Smillert 1123*b39c5158Smillert=head2 Error Indicators 1124*b39c5158Smillert 1125*b39c5158SmillertThe variables C<$@>, C<$!>, C<$^E>, and C<$?> contain information 1126*b39c5158Smillertabout different types of error conditions that may appear during 1127*b39c5158Smillertexecution of a Perl program. The variables are shown ordered by 1128*b39c5158Smillertthe "distance" between the subsystem which reported the error and 1129*b39c5158Smillertthe Perl process. They correspond to errors detected by the Perl 1130*b39c5158Smillertinterpreter, C library, operating system, or an external program, 1131*b39c5158Smillertrespectively. 1132*b39c5158Smillert 1133*b39c5158SmillertTo illustrate the differences between these variables, consider the 1134*b39c5158Smillertfollowing Perl expression, which uses a single-quoted string: 1135*b39c5158Smillert 1136*b39c5158Smillert eval q{ 1137*b39c5158Smillert open PIPE, "/cdrom/install |"; 1138*b39c5158Smillert @res = <PIPE>; 1139*b39c5158Smillert close PIPE or die "bad pipe: $?, $!"; 1140*b39c5158Smillert }; 1141*b39c5158Smillert 1142*b39c5158SmillertAfter execution of this statement all 4 variables may have been set. 1143*b39c5158Smillert 1144*b39c5158SmillertC<$@> is set if the string to be C<eval>-ed did not compile (this 1145*b39c5158Smillertmay happen if C<open> or C<close> were imported with bad prototypes), 1146*b39c5158Smillertor if Perl code executed during evaluation die()d . In these cases 1147*b39c5158Smillertthe value of $@ is the compile error, or the argument to C<die> 1148*b39c5158Smillert(which will interpolate C<$!> and C<$?>!). (See also L<Fatal>, 1149*b39c5158Smillertthough.) 1150*b39c5158Smillert 1151*b39c5158SmillertWhen the eval() expression above is executed, open(), C<< <PIPE> >>, 1152*b39c5158Smillertand C<close> are translated to calls in the C run-time library and 1153*b39c5158Smillertthence to the operating system kernel. C<$!> is set to the C library's 1154*b39c5158SmillertC<errno> if one of these calls fails. 1155*b39c5158Smillert 1156*b39c5158SmillertUnder a few operating systems, C<$^E> may contain a more verbose 1157*b39c5158Smillerterror indicator, such as in this case, "CDROM tray not closed." 1158*b39c5158SmillertSystems that do not support extended error messages leave C<$^E> 1159*b39c5158Smillertthe same as C<$!>. 1160*b39c5158Smillert 1161*b39c5158SmillertFinally, C<$?> may be set to non-0 value if the external program 1162*b39c5158SmillertF</cdrom/install> fails. The upper eight bits reflect specific 1163*b39c5158Smillerterror conditions encountered by the program (the program's exit() 1164*b39c5158Smillertvalue). The lower eight bits reflect mode of failure, like signal 1165*b39c5158Smillertdeath and core dump information See wait(2) for details. In 1166*b39c5158Smillertcontrast to C<$!> and C<$^E>, which are set only if error condition 1167*b39c5158Smillertis detected, the variable C<$?> is set on each C<wait> or pipe 1168*b39c5158SmillertC<close>, overwriting the old value. This is more like C<$@>, which 1169*b39c5158Smillerton every eval() is always set on failure and cleared on success. 1170*b39c5158Smillert 1171*b39c5158SmillertFor more details, see the individual descriptions at C<$@>, C<$!>, C<$^E>, 1172*b39c5158Smillertand C<$?>. 1173*b39c5158Smillert 1174*b39c5158Smillert=head2 Technical Note on the Syntax of Variable Names 1175*b39c5158Smillert 1176*b39c5158SmillertVariable names in Perl can have several formats. Usually, they 1177*b39c5158Smillertmust begin with a letter or underscore, in which case they can be 1178*b39c5158Smillertarbitrarily long (up to an internal limit of 251 characters) and 1179*b39c5158Smillertmay contain letters, digits, underscores, or the special sequence 1180*b39c5158SmillertC<::> or C<'>. In this case, the part before the last C<::> or 1181*b39c5158SmillertC<'> is taken to be a I<package qualifier>; see L<perlmod>. 1182*b39c5158Smillert 1183*b39c5158SmillertPerl variable names may also be a sequence of digits or a single 1184*b39c5158Smillertpunctuation or control character. These names are all reserved for 1185*b39c5158Smillertspecial uses by Perl; for example, the all-digits names are used 1186*b39c5158Smillertto hold data captured by backreferences after a regular expression 1187*b39c5158Smillertmatch. Perl has a special syntax for the single-control-character 1188*b39c5158Smillertnames: It understands C<^X> (caret C<X>) to mean the control-C<X> 1189*b39c5158Smillertcharacter. For example, the notation C<$^W> (dollar-sign caret 1190*b39c5158SmillertC<W>) is the scalar variable whose name is the single character 1191*b39c5158Smillertcontrol-C<W>. This is better than typing a literal control-C<W> 1192*b39c5158Smillertinto your program. 1193*b39c5158Smillert 1194*b39c5158SmillertFinally, new in Perl 5.6, Perl variable names may be alphanumeric 1195*b39c5158Smillertstrings that begin with control characters (or better yet, a caret). 1196*b39c5158SmillertThese variables must be written in the form C<${^Foo}>; the braces 1197*b39c5158Smillertare not optional. C<${^Foo}> denotes the scalar variable whose 1198*b39c5158Smillertname is a control-C<F> followed by two C<o>'s. These variables are 1199*b39c5158Smillertreserved for future special uses by Perl, except for the ones that 1200*b39c5158Smillertbegin with C<^_> (control-underscore or caret-underscore). No 1201*b39c5158Smillertcontrol-character name that begins with C<^_> will acquire a special 1202*b39c5158Smillertmeaning in any future version of Perl; such names may therefore be 1203*b39c5158Smillertused safely in programs. C<$^_> itself, however, I<is> reserved. 1204*b39c5158Smillert 1205*b39c5158SmillertPerl identifiers that begin with digits, control characters, or 1206*b39c5158Smillertpunctuation characters are exempt from the effects of the C<package> 1207*b39c5158Smillertdeclaration and are always forced to be in package C<main>. A few 1208*b39c5158Smillertother names are also exempt: 1209*b39c5158Smillert 1210*b39c5158Smillert ENV STDIN 1211*b39c5158Smillert INC STDOUT 1212*b39c5158Smillert ARGV STDERR 1213*b39c5158Smillert ARGVOUT 1214*b39c5158Smillert SIG 1215*b39c5158Smillert 1216*b39c5158SmillertIn particular, the new special C<${^_XYZ}> variables are always taken 1217*b39c5158Smillertto be in package C<main>, regardless of any C<package> declarations 1218*b39c5158Smillertpresently in scope. 1219*b39c5158Smillert 1220*b39c5158Smillert=head1 BUGS 1221*b39c5158Smillert 1222*b39c5158SmillertDue to an unfortunate accident of Perl's implementation, C<use 1223*b39c5158SmillertEnglish> imposes a considerable performance penalty on all regular 1224*b39c5158Smillertexpression matches in a program, regardless of whether they occur 1225*b39c5158Smillertin the scope of C<use English>. For that reason, saying C<use 1226*b39c5158SmillertEnglish> in libraries is strongly discouraged. See the 1227*b39c5158SmillertDevel::SawAmpersand module documentation from CPAN 1228*b39c5158Smillert(http://www.perl.com/CPAN/modules/by-module/Devel/) 1229*b39c5158Smillertfor more information. 1230*b39c5158Smillert 1231*b39c5158SmillertHaving to even think about the C<$^S> variable in your exception 1232*b39c5158Smillerthandlers is simply wrong. C<$SIG{__DIE__}> as currently implemented 1233*b39c5158Smillertinvites grievous and difficult to track down errors. Avoid it 1234*b39c5158Smillertand use an C<END{}> or CORE::GLOBAL::die override instead. 1235