$^P

$^P The internal variable for debugging support. The meanings of the various bits are subject to change, but currently indicate: 0 x01 Debug subroutine enter/exit. 0 x02 Line-by-line debugging. Causes DB::DB() subroutine to be called for each statement executed. Also causes saving source code lines (like 0x400). 0 x04 Switch off optimizations. 0 x08 Preserve more data for future interactive inspections. 0 x10 Keep info about source lines on which a subroutine is defined. 0 x20 Start

$^O

$^O The name of the operating system under which this copy of Perl was built, as determined during the configuration process. For examples see PLATFORMS in perlport. The value is identical to $Config{'osname'} . See also Config and the -V command-line switch documented in perlrun. In Windows platforms, $^O is not very helpful: since it is always MSWin32 , it doesn't tell the difference between 95/98/ME/NT/2000/XP/CE/.NET. Use Win32::GetOSName() or Win32::GetOSVersion() (see Win32 and perlport)

$^N

$^N The text matched by the used group most-recently closed (i.e. the group with the rightmost closing parenthesis) of the last successful search pattern. This is primarily used inside (?{...}) blocks for examining text recently matched. For example, to effectively capture text to a variable (in addition to $1 , $2 , etc.), replace (...) with (?:(...)(?{ $var = $^N })) By setting and then using $var in this way relieves you from having to worry about exactly which numbered set of parentheses

$^M

$^M By default, running out of memory is an untrappable, fatal error. However, if suitably built, Perl can use the contents of $^M as an emergency memory pool after die()ing. Suppose that your Perl were compiled with -DPERL_EMERGENCY_SBRK and used Perl's malloc. Then $^M = 'a' x (1 << 16); would allocate a 64K buffer for use in an emergency. See the INSTALL file in the Perl distribution for information on how to add custom C compilation flags when compiling perl. To discourage casual us

$^L

$^L What formats output as a form feed. The default is \f . You cannot call format_formfeed() on a handle, only as a static method. See IO::Handle.

$^I

$^I The current value of the inplace-edit extension. Use undef to disable inplace editing. Mnemonic: value of -i switch.

$^H

$^H WARNING: This variable is strictly for internal use only. Its availability, behavior, and contents are subject to change without notice. This variable contains compile-time hints for the Perl interpreter. At the end of compilation of a BLOCK the value of this variable is restored to the value when the interpreter started to compile the BLOCK. When perl begins to parse any block construct that provides a lexical scope (e.g., eval body, required file, subroutine body, loop body, or condition

$^F

$^F The maximum system file descriptor, ordinarily 2. System file descriptors are passed to exec()ed processes, while higher file descriptors are not. Also, during an open(), system file descriptors are preserved even if the open() fails (ordinary file descriptors are closed before the open() is attempted). The close-on-exec status of a file descriptor will be decided according to the value of $^F when the corresponding file, pipe, or socket was opened, not the time of the exec().

$^E

$^E Error information specific to the current operating system. At the moment, this differs from $! under only VMS, OS/2, and Win32 (and for MacPerl). On all other platforms, $^E is always just the same as $! . Under VMS, $^E provides the VMS status value from the last system error. This is more specific information about the last system error than that provided by $! . This is particularly important when $! is set to EVMSERR. Under OS/2, $^E is set to the error code of the last call to OS/2 A

$^D

$^D The current value of the debugging flags. May be read or set. Like its command-line equivalent, you can use numeric or symbolic values, eg $^D = 10 or $^D = "st" . Mnemonic: value of -D switch.