sanity check piped opens (tweaked version of patch suggested
[p5sagit/p5-mst-13.2.git] / pod / perlvar.pod
CommitLineData
a0d0e21e 1=head1 NAME
2
3perlvar - Perl predefined variables
4
5=head1 DESCRIPTION
6
7=head2 Predefined Names
8
5a964f20 9The following names have special meaning to Perl. Most
5f05dabc 10punctuation names have reasonable mnemonics, or analogues in one of
5a964f20 11the shells. Nevertheless, if you wish to use long variable names,
a0d0e21e 12you just need to say
13
14 use English;
15
16at the top of your program. This will alias all the short names to the
5a964f20 17long names in the current package. Some even have medium names,
a0d0e21e 18generally borrowed from B<awk>.
19
19ddd453 20Due to an unfortunate accident of Perl's implementation, "C<use English>"
21imposes a considerable performance penalty on all regular expression
22matches in a program, regardless of whether they occur in the scope of
23"C<use English>". For that reason, saying "C<use English>" in
24libraries is strongly discouraged. See the Devel::SawAmpersand module
25documentation from CPAN
26(http://www.perl.com/CPAN/modules/by-module/Devel/Devel-SawAmpersand-0.10.readme)
27for more information.
28
a0d0e21e 29To go a step further, those variables that depend on the currently
fb73857a 30selected filehandle may instead (and preferably) be set by calling an
31object method on the FileHandle object. (Summary lines below for this
32contain the word HANDLE.) First you must say
a0d0e21e 33
34 use FileHandle;
35
36after which you may use either
37
38 method HANDLE EXPR
39
5a964f20 40or more safely,
a0d0e21e 41
42 HANDLE->method(EXPR)
43
44Each of the methods returns the old value of the FileHandle attribute.
45The methods each take an optional EXPR, which if supplied specifies the
46new value for the FileHandle attribute in question. If not supplied,
47most of the methods do nothing to the current value, except for
48autoflush(), which will assume a 1 for you, just to be different.
49
748a9306 50A few of these variables are considered "read-only". This means that if
51you try to assign to this variable, either directly or indirectly through
52a reference, you'll raise a run-time exception.
a0d0e21e 53
fb73857a 54The following list is ordered by scalar variables first, then the
55arrays, then the hashes (except $^M was added in the wrong place).
56This is somewhat obscured by the fact that %ENV and %SIG are listed as
57$ENV{expr} and $SIG{expr}.
58
59
a0d0e21e 60=over 8
61
62=item $ARG
63
64=item $_
65
66The default input and pattern-searching space. The following pairs are
67equivalent:
68
5f05dabc 69 while (<>) {...} # equivalent in only while!
54310121 70 while (defined($_ = <>)) {...}
a0d0e21e 71
72 /^Subject:/
73 $_ =~ /^Subject:/
74
75 tr/a-z/A-Z/
76 $_ =~ tr/a-z/A-Z/
77
78 chop
79 chop($_)
80
54310121 81Here are the places where Perl will assume $_ even if you
cb1a09d0 82don't use it:
83
84=over 3
85
86=item *
87
88Various unary functions, including functions like ord() and int(), as well
89as the all file tests (C<-f>, C<-d>) except for C<-t>, which defaults to
90STDIN.
91
92=item *
93
94Various list functions like print() and unlink().
95
96=item *
97
98The pattern matching operations C<m//>, C<s///>, and C<tr///> when used
99without an C<=~> operator.
100
54310121 101=item *
cb1a09d0 102
103The default iterator variable in a C<foreach> loop if no other
104variable is supplied.
105
54310121 106=item *
cb1a09d0 107
108The implicit iterator variable in the grep() and map() functions.
109
54310121 110=item *
cb1a09d0 111
112The default place to put an input record when a C<E<lt>FHE<gt>>
113operation's result is tested by itself as the sole criterion of a C<while>
114test. Note that outside of a C<while> test, this will not happen.
115
116=back
117
a0d0e21e 118(Mnemonic: underline is understood in certain operations.)
119
6e2995f4 120=back
121
122=over 8
123
5a964f20 124=item $E<lt>I<digits>E<gt>
a0d0e21e 125
54310121 126Contains the subpattern from the corresponding set of parentheses in
a0d0e21e 127the last pattern matched, not counting patterns matched in nested
5a964f20 128blocks that have been exited already. (Mnemonic: like \digits.)
a0d0e21e 129These variables are all read-only.
130
131=item $MATCH
132
133=item $&
134
135The string matched by the last successful pattern match (not counting
136any matches hidden within a BLOCK or eval() enclosed by the current
137BLOCK). (Mnemonic: like & in some editors.) This variable is read-only.
138
19ddd453 139The use of this variable anywhere in a program imposes a considerable
140performance penalty on all regular expression matches. See the
141Devel::SawAmpersand module from CPAN for more information.
142
a0d0e21e 143=item $PREMATCH
144
145=item $`
146
147The string preceding whatever was matched by the last successful
148pattern match (not counting any matches hidden within a BLOCK or eval
a8f8344d 149enclosed by the current BLOCK). (Mnemonic: C<`> often precedes a quoted
a0d0e21e 150string.) This variable is read-only.
151
19ddd453 152The use of this variable anywhere in a program imposes a considerable
153performance penalty on all regular expression matches. See the
154Devel::SawAmpersand module from CPAN for more information.
155
a0d0e21e 156=item $POSTMATCH
157
158=item $'
159
160The string following whatever was matched by the last successful
161pattern match (not counting any matches hidden within a BLOCK or eval()
a8f8344d 162enclosed by the current BLOCK). (Mnemonic: C<'> often follows a quoted
a0d0e21e 163string.) Example:
164
165 $_ = 'abcdefghi';
166 /def/;
167 print "$`:$&:$'\n"; # prints abc:def:ghi
168
169This variable is read-only.
170
19ddd453 171The use of this variable anywhere in a program imposes a considerable
172performance penalty on all regular expression matches. See the
173Devel::SawAmpersand module from CPAN for more information.
174
a0d0e21e 175=item $LAST_PAREN_MATCH
176
177=item $+
178
179The last bracket matched by the last search pattern. This is useful if
180you don't know which of a set of alternative patterns matched. For
181example:
182
183 /Version: (.*)|Revision: (.*)/ && ($rev = $+);
184
185(Mnemonic: be positive and forward looking.)
186This variable is read-only.
187
6cef1e77 188=item @+
189
190$+[0] is the offset of the end of the last successfull match.
191C<$+[>I<n>C<]> is the offset of the end of the substring matched by
8f580fb8 192I<n>-th subpattern, or undef if the subpattern did not match.
6cef1e77 193
194Thus after a match against $_, $& coincides with C<substr $_, $-[0],
8f580fb8 195$+[0] - $-[0]>. Similarly, C<$>I<n> coincides with C<substr $_, $-[>I<n>C<],
196$+[>I<n>C<] - $-[>I<n>C<]> if C<$-[>I<n>C<]> is defined, and $+ coincides with
197C<substr $_, $-[$#-], $+[$#-]>. One can use C<$#+> to find the number
198of subgroups in the last successful match. Note the difference with
199C<$#->, which is the last I<matched> subgroup. Compare with L<"@-">.
6cef1e77 200
a0d0e21e 201=item $MULTILINE_MATCHING
202
203=item $*
204
4a6725af 205Set to 1 to do multi-line matching within a string, 0 to tell Perl
a0d0e21e 206that it can assume that strings contain a single line, for the purpose
207of optimizing pattern matches. Pattern matches on strings containing
208multiple newlines can produce confusing results when "C<$*>" is 0. Default
209is 0. (Mnemonic: * matches multiple things.) Note that this variable
5f05dabc 210influences the interpretation of only "C<^>" and "C<$>". A literal newline can
a0d0e21e 211be searched for even when C<$* == 0>.
212
5a964f20 213Use of "C<$*>" is deprecated in modern Perls, supplanted by
214the C</s> and C</m> modifiers on pattern matching.
a0d0e21e 215
216=item input_line_number HANDLE EXPR
217
218=item $INPUT_LINE_NUMBER
219
220=item $NR
221
222=item $.
223
6e2995f4 224The current input line number for the last file handle from
a8f8344d 225which you read (or performed a C<seek> or C<tell> on). An
5f05dabc 226explicit close on a filehandle resets the line number. Because
4633a7c4 227"C<E<lt>E<gt>>" never does an explicit close, line numbers increase
228across ARGV files (but see examples under eof()). Localizing C<$.> has
229the effect of also localizing Perl's notion of "the last read
230filehandle". (Mnemonic: many programs use "." to mean the current line
231number.)
a0d0e21e 232
233=item input_record_separator HANDLE EXPR
234
235=item $INPUT_RECORD_SEPARATOR
236
237=item $RS
238
239=item $/
240
241The input record separator, newline by default. Works like B<awk>'s RS
303f2f76 242variable, including treating empty lines as delimiters if set to the
54310121 243null string. (Note: An empty line cannot contain any spaces or tabs.)
4a6725af 244You may set it to a multi-character string to match a multi-character
54310121 245delimiter, or to C<undef> to read to end of file. Note that setting it
246to C<"\n\n"> means something slightly different than setting it to
247C<"">, if the file contains consecutive empty lines. Setting it to
248C<""> will treat two or more consecutive empty lines as a single empty
249line. Setting it to C<"\n\n"> will blindly assume that the next input
250character belongs to the next paragraph, even if it's a newline.
251(Mnemonic: / is used to delimit line boundaries when quoting poetry.)
a0d0e21e 252
253 undef $/;
254 $_ = <FH>; # whole file now here
255 s/\n[ \t]+/ /g;
256
68dc0745 257Remember: the value of $/ is a string, not a regexp. AWK has to be
258better for something :-)
259
5b2b9c68 260Setting $/ to a reference to an integer, scalar containing an integer, or
261scalar that's convertable to an integer will attempt to read records
262instead of lines, with the maximum record size being the referenced
263integer. So this:
264
265 $/ = \32768; # or \"32768", or \$var_containing_32768
266 open(FILE, $myfile);
267 $_ = <FILE>;
268
269will read a record of no more than 32768 bytes from FILE. If you're not
270reading from a record-oriented file (or your OS doesn't have
271record-oriented files), then you'll likely get a full chunk of data with
272every read. If a record is larger than the record size you've set, you'll
273get the record back in pieces.
274
275On VMS, record reads are done with the equivalent of C<sysread>, so it's
276best not to mix record and non-record reads on the same file. (This is
277likely not a problem, as any file you'd want to read in record mode is
278proably usable in line mode) Non-VMS systems perform normal I/O, so
279it's safe to mix record and non-record reads of a file.
280
a0d0e21e 281=item autoflush HANDLE EXPR
282
283=item $OUTPUT_AUTOFLUSH
284
285=item $|
286
54310121 287If set to nonzero, forces a flush right away and after every write or print on the
6e2995f4 288currently selected output channel. Default is 0 (regardless of whether
5f05dabc 289the channel is actually buffered by the system or not; C<$|> tells you
54310121 290only whether you've asked Perl explicitly to flush after each write).
6e2995f4 291Note that STDOUT will typically be line buffered if output is to the
292terminal and block buffered otherwise. Setting this variable is useful
293primarily when you are outputting to a pipe, such as when you are running
294a Perl script under rsh and want to see the output as it's happening. This
295has no effect on input buffering.
cb1a09d0 296(Mnemonic: when you want your pipes to be piping hot.)
a0d0e21e 297
298=item output_field_separator HANDLE EXPR
299
300=item $OUTPUT_FIELD_SEPARATOR
301
302=item $OFS
303
304=item $,
305
306The output field separator for the print operator. Ordinarily the
5f05dabc 307print operator simply prints out the comma-separated fields you
308specify. To get behavior more like B<awk>, set this variable
a0d0e21e 309as you would set B<awk>'s OFS variable to specify what is printed
310between fields. (Mnemonic: what is printed when there is a , in your
311print statement.)
312
313=item output_record_separator HANDLE EXPR
314
315=item $OUTPUT_RECORD_SEPARATOR
316
317=item $ORS
318
319=item $\
320
321The output record separator for the print operator. Ordinarily the
5f05dabc 322print operator simply prints out the comma-separated fields you
323specify, with no trailing newline or record separator assumed.
324To get behavior more like B<awk>, set this variable as you would
a0d0e21e 325set B<awk>'s ORS variable to specify what is printed at the end of the
326print. (Mnemonic: you set "C<$\>" instead of adding \n at the end of the
a8f8344d 327print. Also, it's just like C<$/>, but it's what you get "back" from
a0d0e21e 328Perl.)
329
330=item $LIST_SEPARATOR
331
332=item $"
333
334This is like "C<$,>" except that it applies to array values interpolated
335into a double-quoted string (or similar interpreted string). Default
336is a space. (Mnemonic: obvious, I think.)
337
338=item $SUBSCRIPT_SEPARATOR
339
340=item $SUBSEP
341
342=item $;
343
54310121 344The subscript separator for multidimensional array emulation. If you
a0d0e21e 345refer to a hash element as
346
347 $foo{$a,$b,$c}
348
349it really means
350
351 $foo{join($;, $a, $b, $c)}
352
353But don't put
354
355 @foo{$a,$b,$c} # a slice--note the @
356
357which means
358
359 ($foo{$a},$foo{$b},$foo{$c})
360
361Default is "\034", the same as SUBSEP in B<awk>. Note that if your
362keys contain binary data there might not be any safe value for "C<$;>".
363(Mnemonic: comma (the syntactic subscript separator) is a
364semi-semicolon. Yeah, I know, it's pretty lame, but "C<$,>" is already
365taken for something more important.)
366
54310121 367Consider using "real" multidimensional arrays.
a0d0e21e 368
369=item $OFMT
370
371=item $#
372
373The output format for printed numbers. This variable is a half-hearted
374attempt to emulate B<awk>'s OFMT variable. There are times, however,
375when B<awk> and Perl have differing notions of what is in fact
6e2995f4 376numeric. The initial value is %.I<n>g, where I<n> is the value
377of the macro DBL_DIG from your system's F<float.h>. This is different from
378B<awk>'s default OFMT setting of %.6g, so you need to set "C<$#>"
379explicitly to get B<awk>'s value. (Mnemonic: # is the number sign.)
a0d0e21e 380
5f05dabc 381Use of "C<$#>" is deprecated.
a0d0e21e 382
383=item format_page_number HANDLE EXPR
384
385=item $FORMAT_PAGE_NUMBER
386
387=item $%
388
389The current page number of the currently selected output channel.
390(Mnemonic: % is page number in B<nroff>.)
391
392=item format_lines_per_page HANDLE EXPR
393
394=item $FORMAT_LINES_PER_PAGE
395
396=item $=
397
398The current page length (printable lines) of the currently selected
399output channel. Default is 60. (Mnemonic: = has horizontal lines.)
400
401=item format_lines_left HANDLE EXPR
402
403=item $FORMAT_LINES_LEFT
404
405=item $-
406
407The number of lines left on the page of the currently selected output
408channel. (Mnemonic: lines_on_page - lines_printed.)
409
6cef1e77 410=item @-
411
412$-[0] is the offset of the start of the last successfull match.
413C<$-[>I<n>C<]> is the offset of the start of the substring matched by
8f580fb8 414I<n>-th subpattern, or undef if the subpattern did not match.
6cef1e77 415
416Thus after a match against $_, $& coincides with C<substr $_, $-[0],
8f580fb8 417$+[0] - $-[0]>. Similarly, C<$>I<n> coincides with C<substr $_, $-[>I<n>C<],
418$+[>I<n>C<] - $-[>I<n>C<]> if C<$-[>I<n>C<]> is defined, and $+ coincides with
419C<substr $_, $-[$#-], $+[$#-]>. One can use C<$#-> to find the last
420matched subgroup in the last successful match. Note the difference with
421C<$#+>, which is the number of subgroups in the regular expression. Compare
422with L<"@+">.
6cef1e77 423
a0d0e21e 424=item format_name HANDLE EXPR
425
426=item $FORMAT_NAME
427
428=item $~
429
430The name of the current report format for the currently selected output
431channel. Default is name of the filehandle. (Mnemonic: brother to
432"C<$^>".)
433
434=item format_top_name HANDLE EXPR
435
436=item $FORMAT_TOP_NAME
437
438=item $^
439
440The name of the current top-of-page format for the currently selected
441output channel. Default is name of the filehandle with _TOP
442appended. (Mnemonic: points to top of page.)
443
444=item format_line_break_characters HANDLE EXPR
445
446=item $FORMAT_LINE_BREAK_CHARACTERS
447
448=item $:
449
450The current set of characters after which a string may be broken to
54310121 451fill continuation fields (starting with ^) in a format. Default is
a0d0e21e 452S<" \n-">, to break on whitespace or hyphens. (Mnemonic: a "colon" in
453poetry is a part of a line.)
454
455=item format_formfeed HANDLE EXPR
456
457=item $FORMAT_FORMFEED
458
459=item $^L
460
5f05dabc 461What formats output to perform a form feed. Default is \f.
a0d0e21e 462
463=item $ACCUMULATOR
464
465=item $^A
466
467The current value of the write() accumulator for format() lines. A format
468contains formline() commands that put their result into C<$^A>. After
469calling its format, write() prints out the contents of C<$^A> and empties.
470So you never actually see the contents of C<$^A> unless you call
471formline() yourself and then look at it. See L<perlform> and
472L<perlfunc/formline()>.
473
474=item $CHILD_ERROR
475
476=item $?
477
54310121 478The status returned by the last pipe close, backtick (C<``>) command,
5a964f20 479or system() operator. Note that this is the status word returned by the
480wait() system call (or else is made up to look like it). Thus, the exit
481value of the subprocess is actually (C<$? E<gt>E<gt> 8>), and C<$? & 127>
482gives which signal, if any, the process died from, and C<$? & 128> reports
483whether there was a core dump. (Mnemonic: similar to B<sh> and B<ksh>.)
a0d0e21e 484
7b8d334a 485Additionally, if the C<h_errno> variable is supported in C, its value
486is returned via $? if any of the C<gethost*()> functions fail.
487
aa689395 488Note that if you have installed a signal handler for C<SIGCHLD>, the
489value of C<$?> will usually be wrong outside that handler.
490
a8f8344d 491Inside an C<END> subroutine C<$?> contains the value that is going to be
492given to C<exit()>. You can modify C<$?> in an C<END> subroutine to
493change the exit status of the script.
494
aa689395 495Under VMS, the pragma C<use vmsish 'status'> makes C<$?> reflect the
ff0cee69 496actual VMS exit status, instead of the default emulation of POSIX
497status.
f86702cc 498
55602bd2 499Also see L<Error Indicators>.
500
a0d0e21e 501=item $OS_ERROR
502
503=item $ERRNO
504
505=item $!
506
507If used in a numeric context, yields the current value of errno, with
508all the usual caveats. (This means that you shouldn't depend on the
22fae026 509value of C<$!> to be anything in particular unless you've gotten a
a0d0e21e 510specific error return indicating a system error.) If used in a string
511context, yields the corresponding system error string. You can assign
22fae026 512to C<$!> to set I<errno> if, for instance, you want C<"$!"> to return the
a0d0e21e 513string for error I<n>, or you want to set the exit value for the die()
514operator. (Mnemonic: What just went bang?)
515
55602bd2 516Also see L<Error Indicators>.
517
5c055ba3 518=item $EXTENDED_OS_ERROR
519
520=item $^E
521
22fae026 522Error information specific to the current operating system. At
523the moment, this differs from C<$!> under only VMS, OS/2, and Win32
524(and for MacPerl). On all other platforms, C<$^E> is always just
525the same as C<$!>.
526
527Under VMS, C<$^E> provides the VMS status value from the last
528system error. This is more specific information about the last
529system error than that provided by C<$!>. This is particularly
d516a115 530important when C<$!> is set to B<EVMSERR>.
22fae026 531
1c1c7f20 532Under OS/2, C<$^E> is set to the error code of the last call to
533OS/2 API either via CRT, or directly from perl.
22fae026 534
535Under Win32, C<$^E> always returns the last error information
536reported by the Win32 call C<GetLastError()> which describes
537the last error from within the Win32 API. Most Win32-specific
538code will report errors via C<$^E>. ANSI C and UNIX-like calls
539set C<errno> and so most portable Perl code will report errors
540via C<$!>.
541
542Caveats mentioned in the description of C<$!> generally apply to
543C<$^E>, also. (Mnemonic: Extra error explanation.)
5c055ba3 544
55602bd2 545Also see L<Error Indicators>.
546
a0d0e21e 547=item $EVAL_ERROR
548
549=item $@
550
551The Perl syntax error message from the last eval() command. If null, the
552last eval() parsed and executed correctly (although the operations you
553invoked may have failed in the normal fashion). (Mnemonic: Where was
554the syntax error "at"?)
555
748a9306 556Note that warning messages are not collected in this variable. You can,
a8f8344d 557however, set up a routine to process warnings by setting C<$SIG{__WARN__}>
54310121 558as described below.
748a9306 559
55602bd2 560Also see L<Error Indicators>.
561
a0d0e21e 562=item $PROCESS_ID
563
564=item $PID
565
566=item $$
567
568The process number of the Perl running this script. (Mnemonic: same
569as shells.)
570
571=item $REAL_USER_ID
572
573=item $UID
574
575=item $<
576
577The real uid of this process. (Mnemonic: it's the uid you came I<FROM>,
578if you're running setuid.)
579
580=item $EFFECTIVE_USER_ID
581
582=item $EUID
583
584=item $>
585
586The effective uid of this process. Example:
587
588 $< = $>; # set real to effective uid
589 ($<,$>) = ($>,$<); # swap real and effective uid
590
8cc95fdb 591(Mnemonic: it's the uid you went I<TO>, if you're running setuid.)
592Note: "C<$E<lt>>" and "C<$E<gt>>" can be swapped only on machines
593supporting setreuid().
a0d0e21e 594
595=item $REAL_GROUP_ID
596
597=item $GID
598
599=item $(
600
601The real gid of this process. If you are on a machine that supports
602membership in multiple groups simultaneously, gives a space separated
603list of groups you are in. The first number is the one returned by
604getgid(), and the subsequent ones by getgroups(), one of which may be
8cc95fdb 605the same as the first number.
606
607However, a value assigned to "C<$(>" must be a single number used to
608set the real gid. So the value given by "C<$(>" should I<not> be assigned
609back to "C<$(>" without being forced numeric, such as by adding zero.
610
611(Mnemonic: parentheses are used to I<GROUP> things. The real gid is the
612group you I<LEFT>, if you're running setgid.)
a0d0e21e 613
614=item $EFFECTIVE_GROUP_ID
615
616=item $EGID
617
618=item $)
619
620The effective gid of this process. If you are on a machine that
621supports membership in multiple groups simultaneously, gives a space
622separated list of groups you are in. The first number is the one
623returned by getegid(), and the subsequent ones by getgroups(), one of
8cc95fdb 624which may be the same as the first number.
625
626Similarly, a value assigned to "C<$)>" must also be a space-separated
627list of numbers. The first number is used to set the effective gid, and
628the rest (if any) are passed to setgroups(). To get the effect of an
629empty list for setgroups(), just repeat the new effective gid; that is,
630to force an effective gid of 5 and an effectively empty setgroups()
631list, say C< $) = "5 5" >.
632
633(Mnemonic: parentheses are used to I<GROUP> things. The effective gid
634is the group that's I<RIGHT> for you, if you're running setgid.)
a0d0e21e 635
5f05dabc 636Note: "C<$E<lt>>", "C<$E<gt>>", "C<$(>" and "C<$)>" can be set only on
637machines that support the corresponding I<set[re][ug]id()> routine. "C<$(>"
8cc95fdb 638and "C<$)>" can be swapped only on machines supporting setregid().
a0d0e21e 639
640=item $PROGRAM_NAME
641
642=item $0
643
644Contains the name of the file containing the Perl script being
54310121 645executed. On some operating systems
646assigning to "C<$0>" modifies the argument area that the ps(1)
a0d0e21e 647program sees. This is more useful as a way of indicating the
648current program state than it is for hiding the program you're running.
649(Mnemonic: same as B<sh> and B<ksh>.)
650
651=item $[
652
653The index of the first element in an array, and of the first character
654in a substring. Default is 0, but you could set it to 1 to make
655Perl behave more like B<awk> (or Fortran) when subscripting and when
656evaluating the index() and substr() functions. (Mnemonic: [ begins
657subscripts.)
658
659As of Perl 5, assignment to "C<$[>" is treated as a compiler directive,
660and cannot influence the behavior of any other file. Its use is
661discouraged.
662
663=item $PERL_VERSION
664
665=item $]
666
54310121 667The version + patchlevel / 1000 of the Perl interpreter. This variable
668can be used to determine whether the Perl interpreter executing a
669script is in the right range of versions. (Mnemonic: Is this version
670of perl in the right bracket?) Example:
a0d0e21e 671
672 warn "No checksumming!\n" if $] < 3.019;
673
54310121 674See also the documentation of C<use VERSION> and C<require VERSION>
675for a convenient way to fail if the Perl interpreter is too old.
a0d0e21e 676
305aace0 677=item $COMPILING
678
679=item $^C
680
681The current value of the flag associated with the B<-c> switch. Mainly
682of use with B<-MO=...> to allow code to alter its behaviour when being compiled.
683(For example to automatically AUTOLOADing at compile time rather than normal
684deferred loading.) Setting C<$^C = 1> is similar to calling C<B::minus_c>.
685
a0d0e21e 686=item $DEBUGGING
687
688=item $^D
689
690The current value of the debugging flags. (Mnemonic: value of B<-D>
691switch.)
692
693=item $SYSTEM_FD_MAX
694
695=item $^F
696
697The maximum system file descriptor, ordinarily 2. System file
698descriptors are passed to exec()ed processes, while higher file
699descriptors are not. Also, during an open(), system file descriptors are
700preserved even if the open() fails. (Ordinary file descriptors are
701closed before the open() is attempted.) Note that the close-on-exec
702status of a file descriptor will be decided according to the value of
4771b018 703C<$^F> when the open() or pipe() was called, not the time of the exec().
a0d0e21e 704
6e2995f4 705=item $^H
706
fb73857a 707The current set of syntax checks enabled by C<use strict> and other block
708scoped compiler hints. See the documentation of C<strict> for more details.
6e2995f4 709
a0d0e21e 710=item $INPLACE_EDIT
711
712=item $^I
713
714The current value of the inplace-edit extension. Use C<undef> to disable
715inplace editing. (Mnemonic: value of B<-i> switch.)
716
fb73857a 717=item $^M
718
719By default, running out of memory it is not trappable. However, if
720compiled for this, Perl may use the contents of C<$^M> as an emergency
721pool after die()ing with this message. Suppose that your Perl were
722compiled with -DPERL_EMERGENCY_SBRK and used Perl's malloc. Then
723
724 $^M = 'a' x (1<<16);
725
726would allocate a 64K buffer for use when in emergency. See the F<INSTALL>
727file for information on how to enable this option. As a disincentive to
728casual use of this advanced feature, there is no L<English> long name for
729this variable.
730
5c055ba3 731=item $OSNAME
6e2995f4 732
5c055ba3 733=item $^O
734
735The name of the operating system under which this copy of Perl was
736built, as determined during the configuration process. The value
737is identical to C<$Config{'osname'}>.
738
a0d0e21e 739=item $PERLDB
740
741=item $^P
742
84902520 743The internal variable for debugging support. Different bits mean the
744following (subject to change):
745
746=over 6
747
748=item 0x01
749
750Debug subroutine enter/exit.
751
752=item 0x02
753
754Line-by-line debugging.
755
756=item 0x04
757
758Switch off optimizations.
759
760=item 0x08
761
762Preserve more data for future interactive inspections.
763
764=item 0x10
765
766Keep info about source lines on which a subroutine is defined.
767
768=item 0x20
769
770Start with single-step on.
771
772=back
773
774Note that some bits may be relevent at compile-time only, some at
775run-time only. This is a new mechanism and the details may change.
a0d0e21e 776
b9ac3b5b 777=item $^R
778
779The result of evaluation of the last successful L<perlre/C<(?{ code })>>
780regular expression assertion. (Excluding those used as switches.) May
781be written to.
782
fb73857a 783=item $^S
784
785Current state of the interpreter. Undefined if parsing of the current
786module/eval is not finished (may happen in $SIG{__DIE__} and
a3cb178b 787$SIG{__WARN__} handlers). True if inside an eval, otherwise false.
fb73857a 788
a0d0e21e 789=item $BASETIME
790
791=item $^T
792
793The time at which the script began running, in seconds since the
5f05dabc 794epoch (beginning of 1970). The values returned by the B<-M>, B<-A>,
a0d0e21e 795and B<-C> filetests are
796based on this value.
797
798=item $WARNING
799
800=item $^W
801
303f2f76 802The current value of the warning switch, either TRUE or FALSE.
803(Mnemonic: related to the B<-w> switch.)
a0d0e21e 804
805=item $EXECUTABLE_NAME
806
807=item $^X
808
809The name that the Perl binary itself was executed as, from C's C<argv[0]>.
810
811=item $ARGV
812
a8f8344d 813contains the name of the current file when reading from E<lt>E<gt>.
a0d0e21e 814
815=item @ARGV
816
817The array @ARGV contains the command line arguments intended for the
818script. Note that C<$#ARGV> is the generally number of arguments minus
5f05dabc 819one, because C<$ARGV[0]> is the first argument, I<NOT> the command name. See
a0d0e21e 820"C<$0>" for the command name.
821
822=item @INC
823
824The array @INC contains the list of places to look for Perl scripts to
825be evaluated by the C<do EXPR>, C<require>, or C<use> constructs. It
826initially consists of the arguments to any B<-I> command line switches,
6e2995f4 827followed by the default Perl library, probably F</usr/local/lib/perl>,
cb1a09d0 828followed by ".", to represent the current directory. If you need to
5f05dabc 829modify this at runtime, you should use the C<use lib> pragma
830to get the machine-dependent library properly loaded also:
a0d0e21e 831
cb1a09d0 832 use lib '/mypath/libdir/';
833 use SomeMod;
303f2f76 834
fb73857a 835=item @_
836
837Within a subroutine the array @_ contains the parameters passed to that
838subroutine. See L<perlsub>.
839
a0d0e21e 840=item %INC
841
842The hash %INC contains entries for each filename that has
843been included via C<do> or C<require>. The key is the filename you
844specified, and the value is the location of the file actually found.
845The C<require> command uses this array to determine whether a given file
846has already been included.
847
b687b08b 848=item %ENV
849
850=item $ENV{expr}
a0d0e21e 851
852The hash %ENV contains your current environment. Setting a
853value in C<ENV> changes the environment for child processes.
854
b687b08b 855=item %SIG
856
857=item $SIG{expr}
a0d0e21e 858
859The hash %SIG is used to set signal handlers for various
860signals. Example:
861
862 sub handler { # 1st argument is signal name
fb73857a 863 my($sig) = @_;
a0d0e21e 864 print "Caught a SIG$sig--shutting down\n";
865 close(LOG);
866 exit(0);
867 }
868
fb73857a 869 $SIG{'INT'} = \&handler;
870 $SIG{'QUIT'} = \&handler;
a0d0e21e 871 ...
872 $SIG{'INT'} = 'DEFAULT'; # restore default action
873 $SIG{'QUIT'} = 'IGNORE'; # ignore SIGQUIT
874
f648820c 875Using a value of C<'IGNORE'> usually has the effect of ignoring the
876signal, except for the C<CHLD> signal. See L<perlipc> for more about
877this special case.
878
5f05dabc 879The %SIG array contains values for only the signals actually set within
a0d0e21e 880the Perl script. Here are some other examples:
881
fb73857a 882 $SIG{"PIPE"} = Plumber; # SCARY!!
883 $SIG{"PIPE"} = "Plumber"; # assumes main::Plumber (not recommended)
a0d0e21e 884 $SIG{"PIPE"} = \&Plumber; # just fine; assume current Plumber
885 $SIG{"PIPE"} = Plumber(); # oops, what did Plumber() return??
886
887The one marked scary is problematic because it's a bareword, which means
54310121 888sometimes it's a string representing the function, and sometimes it's
a0d0e21e 889going to call the subroutine call right then and there! Best to be sure
a8f8344d 890and quote it or take a reference to it. *Plumber works too. See L<perlsub>.
748a9306 891
44a8e56a 892If your system has the sigaction() function then signal handlers are
893installed using it. This means you get reliable signal handling. If
894your system has the SA_RESTART flag it is used when signals handlers are
895installed. This means that system calls for which it is supported
896continue rather than returning when a signal arrives. If you want your
897system calls to be interrupted by signal delivery then do something like
898this:
899
900 use POSIX ':signal_h';
901
902 my $alarm = 0;
903 sigaction SIGALRM, new POSIX::SigAction sub { $alarm = 1 }
904 or die "Error setting SIGALRM handler: $!\n";
905
906See L<POSIX>.
907
748a9306 908Certain internal hooks can be also set using the %SIG hash. The
a8f8344d 909routine indicated by C<$SIG{__WARN__}> is called when a warning message is
748a9306 910about to be printed. The warning message is passed as the first
911argument. The presence of a __WARN__ hook causes the ordinary printing
912of warnings to STDERR to be suppressed. You can use this to save warnings
913in a variable, or turn warnings into fatal errors, like this:
914
915 local $SIG{__WARN__} = sub { die $_[0] };
916 eval $proggie;
917
a8f8344d 918The routine indicated by C<$SIG{__DIE__}> is called when a fatal exception
748a9306 919is about to be thrown. The error message is passed as the first
920argument. When a __DIE__ hook routine returns, the exception
921processing continues as it would have in the absence of the hook,
cb1a09d0 922unless the hook routine itself exits via a C<goto>, a loop exit, or a die().
774d564b 923The C<__DIE__> handler is explicitly disabled during the call, so that you
fb73857a 924can die from a C<__DIE__> handler. Similarly for C<__WARN__>.
925
926Note that the C<$SIG{__DIE__}> hook is called even inside eval()ed
7b8d334a 927blocks/strings. See L<perlfunc/die> and L<perlvar/$^S> for how to
fb73857a 928circumvent this.
929
930Note that C<__DIE__>/C<__WARN__> handlers are very special in one
931respect: they may be called to report (probable) errors found by the
932parser. In such a case the parser may be in inconsistent state, so
933any attempt to evaluate Perl code from such a handler will probably
934result in a segfault. This means that calls which result/may-result
935in parsing Perl should be used with extreme causion, like this:
936
937 require Carp if defined $^S;
938 Carp::confess("Something wrong") if defined &Carp::confess;
939 die "Something wrong, but could not load Carp to give backtrace...
940 To see backtrace try starting Perl with -MCarp switch";
941
942Here the first line will load Carp I<unless> it is the parser who
943called the handler. The second line will print backtrace and die if
944Carp was available. The third line will be executed only if Carp was
945not available.
946
947See L<perlfunc/die>, L<perlfunc/warn> and L<perlfunc/eval> for
948additional info.
68dc0745 949
a0d0e21e 950=back
55602bd2 951
952=head2 Error Indicators
953
954The variables L<$@>, L<$!>, L<$^E>, and L<$?> contain information about
955different types of error conditions that may appear during execution of
956Perl script. The variables are shown ordered by the "distance" between
957the subsystem which reported the error and the Perl process, and
958correspond to errors detected by the Perl interpreter, C library,
959operating system, or an external program, respectively.
960
961To illustrate the differences between these variables, consider the
962following Perl expression:
963
964 eval '
965 open PIPE, "/cdrom/install |";
966 @res = <PIPE>;
967 close PIPE or die "bad pipe: $?, $!";
968 ';
969
970After execution of this statement all 4 variables may have been set.
971
972$@ is set if the string to be C<eval>-ed did not compile (this may happen if
973C<open> or C<close> were imported with bad prototypes), or if Perl
974code executed during evaluation die()d (either implicitly, say,
975if C<open> was imported from module L<Fatal>, or the C<die> after
976C<close> was triggered). In these cases the value of $@ is the compile
977error, or C<Fatal> error (which will interpolate C<$!>!), or the argument
978to C<die> (which will interpolate C<$!> and C<$?>!).
979
980When the above expression is executed, open(), C<<PIPEE<gt>>, and C<close>
981are translated to C run-time library calls. $! is set if one of these
982calls fails. The value is a symbolic indicator chosen by the C run-time
983library, say C<No such file or directory>.
984
985On some systems the above C library calls are further translated
986to calls to the kernel. The kernel may have set more verbose error
987indicator that one of the handful of standard C errors. In such cases $^E
988contains this verbose error indicator, which may be, say, C<CDROM tray not
989closed>. On systems where C library calls are identical to system calls
990$^E is a duplicate of $!.
991
992Finally, $? may be set to non-C<0> value if the external program
993C</cdrom/install> fails. Upper bits of the particular value may reflect
994specific error conditions encountered by this program (this is
995program-dependent), lower-bits reflect mode of failure (segfault, completion,
996etc.). Note that in contrast to $@, $!, and $^E, which are set only
997if error condition is detected, the variable $? is set on each C<wait> or
998pipe C<close>, overwriting the old value.
999
1000For more details, see the individual descriptions at L<$@>, L<$!>, L<$^E>,
1001and L<$?>.